Как получить вывод задачи exec с помощью msbuild
Я пытаюсь получить простой вывод с помощью задачи 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
----------------------------------------
----------------------------------------
----------------------------------------
Как я могу получить вывод с помощью script?
Ответы
Ответ 1
Хорошие новости всем! Теперь вы можете захватывать вывод из <Exec>
с .NET 4.5.
Вот так:
<Exec ... ConsoleToMSBuild="true">
<Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" />
</Exec>
Просто:
- Добавьте
ConsoleToMsBuild="true"
в тэг <Exec>
- Захват вывода с использованием параметра
ConsoleOutput
в теге <Output>
Наконец-то!
Документация здесь
Ответ 2
Я дошел до такой степени, что меня так расстроило ограничения MSBuild и того, что должно было работать, но не (по крайней мере, не в каждом контексте), что в значительной степени в любое время, когда мне нужно делать что-либо с MSBuild, я создаю задачу пользовательской сборки в С#.
Если ни одно из других предложений не работает, вы можете сделать это таким образом.
Ответ 3
Вы можете передать вывод в файл, так сказать, и прочитать его обратно.
echo test output > somefile.txt