【问题标题】:Getting ExecTask output into an ItemCollection将 ExecTask 输出放入 ItemCollection
【发布时间】:2011-12-28 08:25:08
【问题描述】:

我正在编写一个简单的 MSBuild 脚本,我想在其中执行以下操作:

  • 使用 Exec Task 运行命令行工具。
  • 将工具的输出获取到某个项目集合中。
  • 将此集合用作其他任务的输入。

这里的背景是,我们有几个命令行静态分析和其他分析工具(想想 StyleCop)。

我想运行 git diff 命令并仅从最新提交中获取文件并将这些文件提供给 StyleCop 或任何其他分析工具。

我找不到有关如何使用 Exec 任务执行此操作的任何参考。

编辑:我正在尝试使用 ReadLinesFromFile 任务:

<Exec 
  Command="git diff --name-only HEAD~1 HEAD > C:\output.txt"
  WorkingDirectory="D:\Code" />

<ReadLinesFromFile
  File="C:\output.txt">
  <Output
    TaskParameter="Lines"
    ItemName="ItemsFromFile" />
</ReadLinesFromFile>

<StyleCopTask
  ProjectFullPath="$(MSBuildProjectFile)"
  SourceFiles="@(ItemsFromFile)"
  ForceFullAnalysis="true"
  TreatErrorsAsWarnings="true"
  OutputFile="StyleCopReport.xml"
  CacheResults="true" />

但这似乎不起作用。

我是否正确使用了 ItemsFromFile 集合?

【问题讨论】:

  • ReadLinesFromFileStyleCopTask 看起来不错。 output.txt 看起来像什么?如果它每行包含一个完整的源代码文件路径,这应该可以工作。

标签: visual-studio msbuild build stylecop


【解决方案1】:

如果将 Exec 任务的输出重定向到文件,可以使用 ReadLinesFromFile 任务:http://msdn.microsoft.com/en-us/library/ms164299.aspx

【讨论】:

  • 我能做到,我想有一种更简单、更干净的方法。
猜你喜欢
  • 2011-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-10
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多