Я пытаюсь получить простой вывод с помощью задачи exec с помощью msbuild
:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Test">
<Exec Command="echo test output">
<Output TaskParameter="Outputs" ItemName="Test1" />
</Exec>
<Exec Command="echo test output">
<Output TaskParameter="Outputs" PropertyName="Test2" />
</Exec>
<Message Text="----------------------------------------"/>
<Message Text="@(Test1)"/>
<Message Text="----------------------------------------"/>
<Message Text="$(Test2)"/>
<Message Text="----------------------------------------"/>
</Target>
</Project>
Но получим следующий вывод:
echo test output
test output
echo test output
test output
----------------------------------------
----------------------------------------
----------------------------------------
Как я могу получить вывод моего скрипта?
msbuild
exec
msbuild-task
tbicr
источник
источник
Ответы:
Всем хорошие новости! Теперь вы можете захватывать выходные данные из
<Exec>
.NET 4.5.Как это:
<Exec ... ConsoleToMSBuild="true"> <Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" /> </Exec>
Просто:
ConsoleToMsBuild="true"
в свой<Exec>
тегConsoleOutput
параметр в<Output>
тегеВ заключение!
Документация здесь
источник
Я дошел до того, что меня так разочаровали ограничения MSBuild и вещи, которые должны работать, но не работают (по крайней мере, не в каждом контексте), что почти всегда, когда мне нужно что-то делать с MSBuild , Я создаю настраиваемую задачу сборки на C #.
Если ни одно из других предложений не работает, вы, безусловно, можете сделать это таким же образом.
источник
Если вы хотите записать вывод в структуру, подобную массиву, а не в простую строку, где выходные строки разделены точкой с запятой, используйте ItemName вместо PropertyName :
<Exec ... ConsoleToMSBuild="true"> <Output TaskParameter="ConsoleOutput" ItemName="OutputOfExec" /> </Exec>
источник
Вы можете передать вывод в файл, так сказать, и прочитать его.
источник