msbuild
を使用してexecタスクで簡単な出力を取得しようとしています。
<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
----------------------------------------
----------------------------------------
----------------------------------------
スクリプトで出力を取得するにはどうすればよいですか?
皆さん、朗報です! .NET 4.5以降、<Exec>
から出力をキャプチャできるようになりました。
このような:
<Exec ... ConsoleToMSBuild="true">
<Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" />
</Exec>
単に:
ConsoleToMsBuild="true"
タグに<Exec>
を追加します<Output>
タグのConsoleOutput
パラメーターを使用して出力をキャプチャします最後に!
私は、MSBuildの制限と、動作するはずであるが(少なくともすべてのコンテキストで)動作しないものに非常に不満を感じるようになりました。 、C#でカスタムビルドタスクを作成します。
他の提案がどれも機能していない場合は、そのようにすることができます。
出力をファイルにパイプして、読み上げることができます。
echo test output > somefile.txt
出力をセミコロンで区切られたプレーンな文字列ではなく、配列のような構造に出力をキャプチャする場合は、PropertyNameの代わりにItemNameを使用します。
<Exec ... ConsoleToMSBuild="true">
<Output TaskParameter="ConsoleOutput" ItemName="OutputOfExec" />
</Exec>