从MSBuild exec任务收集输出

rip*_*234 18 msbuild

我有一个我想从MSBuild项目调用的批处理脚本,文档说我不能使用MSBuild项目中批处理(控制台/环境变量)的输出.

有解决方法吗?

小智 25

您可以使用"> output.txt"将命令的输出重定向到文件,并将其读入变量.

<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')" />
Run Code Online (Sandbox Code Playgroud)

  • 这看起来非常h​​acky,如果命令的输出对MSBuild逻辑有用,为什么要写一个文件?然后你必须稍后删除该文件... (4认同)
  • 仅供参考.在[如何使用msbuild获取exec任务输出]中提到了一种现代方法(http://stackoverflow.com/questions/8938679/how-get-exec-task-output-with-msbuild) (4认同)
  • 虽然我同意它有点草率,但在检查其内容后立即添加MSBuild行<Delete Files ="$(OutputFile)"/>并没有那么重要,所以没有留下文件. (2认同)