如何使用msbuild获取exec任务输出

我试图通过使用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的局限性感到非常沮丧,以及那些本该工作的东西,但是不是(至less不是在任何情况下),几乎任何时候我都需要用MSBuild来做任何事情,我用C#创build了一个自定义的构build任务。

如果没有其他的build议是可行的,那么你当然可以这样做。

您可以将输出pipe道传输到一个文件,然后读回来。

 echo test output > somefile.txt