我正在尝试使用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
----------------------------------------
----------------------------------------
----------------------------------------
如何通过我的脚本输出?
答案 0 :(得分:127)
大家好消息!现在,您可以从.NET 4.5开始捕获<Exec>
的输出。
像这样:
<Exec ... ConsoleToMSBuild="true">
<Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" />
</Exec>
简单地:
ConsoleToMsBuild="true"
添加到您的<Exec>
代码ConsoleOutput
标记<Output>
参数捕获输出
最后!
答案 1 :(得分:6)
我已经到了这样的地步,我对MSBuild的局限性感到非常沮丧,以及应该工作但却没有(至少不是在每个环境中)的东西,几乎我需要做的任何时候任何与MSBuild,我在C#中创建自定义构建任务。
如果其他建议都没有起作用,那么你当然可以这样做。
答案 2 :(得分:0)
您可以将输出通过管道传输到文件中,然后将其读回。
echo test output > somefile.txt
答案 3 :(得分:0)
如果要捕获输出到类似数组的结构,而不是捕获到输出行用分号分隔的纯字符串,请使用 ItemName 而不是 PropertyName :
<Exec ... ConsoleToMSBuild="true">
<Output TaskParameter="ConsoleOutput" ItemName="OutputOfExec" />
</Exec>