2009-10-05 7 views
18

Ich habe ein Batch-Skript, das ich von einem MSBuild-Projekt aufrufen möchte, und the documentation sagt, ich kann nicht die Ausgabe aus dem Batch (entweder Konsole/Umgebungsvariablen) im MSBuild-Projekt verwenden.Sammeln von Ausgaben von einer MSBuild-Exec-Task

Gibt es eine Problemumgehung?

+1

Ich schrieb eine benutzerdefinierte MSBuild-Aufgabe, die tut was ich will und die Ausgabe zurückgibt. – ripper234

+0

Dieser Link könnte nützlich sein: http://social.msdn.microsoft.com/Forums/ar/tfsbuild/thread/ef1a0e09-ef66-4ddf-947b-149311182b43 –

+0

Könnten Sie Ihre benutzerdefinierte MDBuild-Aufgabe, die Ihr Problem gelöst hat bitte posten? –

Antwort

24

Sie können die Ausgabe des Befehls mit "> output.txt" in eine Datei umleiten und in eine Variable einlesen.

<PropertyGroup> 
    <OutputFile>$(DropLocation)\$(BuildNumber)\Output.txt</OutputFile> 
</PropertyGroup> 
<Exec Command="dir > &quot;$(OutputFile)&quot;" /> 
<ReadLinesFromFile File="$(OutputFile)"> 
    <Output TaskParameter="Lines" ItemName="OutputLines"/> 
</ReadLinesFromFile> 
<Message Text="@(OutputLines->'%(Identity)', '%0a%0d')" /> 
+4

das sieht sehr hacky aus, warum sollte eine Datei geschrieben werden, wenn die Ausgabe des Befehls gerade ist nützlich für die MSBuild-Logik? Dann müssen Sie die Datei später löschen ... – knocte

+1

Builds, die Logik wie diese verwenden, werden schmerzhaft zu verwalten, aber ich würde es lieber arbeiten und hässlich als gar nicht arbeiten. – evanmcdonnal

+2

Während ich zustimme, ist es ein bisschen schlampig, es ist nicht so ein großer Deal, die MSBuild-Zeile unmittelbar nach dem Überprüfen ihres Inhalts hinzuzufügen, so dass keine Stay-Dateien herumliegen. – NightOwl888

Verwandte Themen