【问题标题】:Gathering outputs from an MSBuild exec task从 MSBuild 执行任务收集输出
【发布时间】:2009-10-05 10:03:23
【问题描述】:

我有一个要从 MSBuild 项目调用的批处理脚本,the documentation 说我不能在 MSBuild 项目中使用批处理的输出(控制台/环境变量)。

有解决办法吗?

【问题讨论】:

  • 我最终编写了一个自定义 MSBuild 任务,它可以执行我想要的操作并返回输出。
  • 能否发布您的自定义 MDBuild 任务以解决您的问题?
  • @StuHarper - 没有代码了,大约是 3 家公司之前的代码。
  • This answer 展示了如何在不重定向到文件的情况下执行此操作

标签: msbuild


【解决方案1】:

您可以使用“> 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')" />

【讨论】:

  • 这看起来很hacky,如果命令的输出只是对MSBuild逻辑有用,为什么还要写一个文件呢?然后你必须稍后删除文件......
  • 使用这种逻辑的构建管理起来很痛苦,但我宁愿它工作又丑陋,而不是根本不工作。
  • 虽然我同意这有点草率,但在检查其内容后立即添加 MSBuild 行 并不是什么大不了的事,所以有没有留下任何文件。
  • 仅供参考。 How get exec task output with msbuild 中提到了一种现代方式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-25
  • 1970-01-01
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 2011-04-23
  • 2014-07-02
相关资源
最近更新 更多