【发布时间】: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 集合?
【问题讨论】:
-
ReadLinesFromFile和StyleCopTask看起来不错。output.txt看起来像什么?如果它每行包含一个完整的源代码文件路径,这应该可以工作。
标签: visual-studio msbuild build stylecop