Próbuję uzyskać proste dane wyjściowe przez wykonanie zadania z 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>
Ale pobierz następny wynik:
echo test output
test output
echo test output
test output
----------------------------------------
----------------------------------------
----------------------------------------
Jak mogę uzyskać dane wyjściowe mojego skryptu?
msbuild
exec
msbuild-task
tbicr
źródło
źródło
Odpowiedzi:
Dobre wieści wszyscy! Możesz teraz przechwytywać dane wyjściowe z
<Exec>
.NET 4.5.Lubię to:
<Exec ... ConsoleToMSBuild="true"> <Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" /> </Exec>
Po prostu:
ConsoleToMsBuild="true"
do swojego<Exec>
taguConsoleOutput
parametru w<Output>
taguWreszcie!
Dokumentacja tutaj
źródło
Doszedłem do punktu, w którym jestem tak sfrustrowany ograniczeniami MSBuild i rzeczy, które powinny działać, ale nie (przynajmniej nie w każdym kontekście), że prawie zawsze muszę zrobić cokolwiek z MSBuild , Tworzę niestandardowe zadanie kompilacji w C #.
Jeśli żadna z pozostałych sugestii nie działa, z pewnością możesz to zrobić w ten sposób.
źródło
Jeśli chcesz przechwycić dane wyjściowe do struktury przypominającej tablicę, a nie do zwykłego ciągu, w którym wiersze wyjściowe są oddzielone średnikiem, użyj ItemName zamiast PropertyName :
<Exec ... ConsoleToMSBuild="true"> <Output TaskParameter="ConsoleOutput" ItemName="OutputOfExec" /> </Exec>
źródło
Możesz potokować wyjście do pliku, że tak powiem, i odczytać go z powrotem.
źródło