Ich versuche eine einfache Ausgabe von Exec Task mit msbuild
zu erhalten:
<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>
Holen Sie sich die nächste Ausgabe:
echo test output
test output
echo test output
test output
----------------------------------------
----------------------------------------
----------------------------------------
Wie kann ich mit meinem Skript eine Ausgabe erhalten?
Gute Nachrichten, Leute! Sie können jetzt die Ausgabe von <Exec>
ab .NET 4.5 erfassen.
So was:
<Exec ... ConsoleToMSBuild="true">
<Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" />
</Exec>
Einfach:
ConsoleToMsBuild="true"
zu Ihrem <Exec>
-Tag hinzuConsoleOutput
in einem Tag <Output>
Endlich!
Ich bin an dem Punkt angelangt, an dem ich mit den Einschränkungen von MSBuild so frustriert bin, und dem Zeug, das funktionieren soll, aber nicht funktioniert (zumindest nicht in jedem Kontext). Das ist fast immer, wenn ich etwas mit MSBuild anfangen muss , Ich erstelle eine benutzerdefinierte Erstellungsaufgabe in C #.
Wenn keiner der anderen Vorschläge funktioniert, können Sie dies sicherlich auch so tun.
Sie können die Ausgabe sozusagen in eine Datei leiten und zurücklesen.
echo test output > somefile.txt
Wenn Sie die Ausgabe in einer Array-ähnlichen Struktur und nicht in einer einfachen Zeichenfolge erfassen möchten, bei der die Ausgabezeilen durch ein Semikolon getrennt sind, verwenden Sie ItemName anstelle von PropertyName :
<Exec ... ConsoleToMSBuild="true">
<Output TaskParameter="ConsoleOutput" ItemName="OutputOfExec" />
</Exec>