将ExecTask输出转换为ItemCollection

时间:2011-12-28 08:25:09

标签: visual-studio msbuild build stylecop

我正在编写一个简单的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集合吗?

1 个答案:

答案 0 :(得分:2)

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