MSBuild ItemGroup可以被分块吗?

时间:2014-10-30 08:55:35

标签: msbuild

我有一个包含项目源文件的ItemGroup:

  <ItemGroup>
    <SourceFiles Include=".\**\*.h;.\**\*.cpp"/>
  </ItemGroup>

有几百个源文件。我想将它们传递给Exec任务中的命令行工具。

如果我为每个文件单独调用命令行工具:

  <Exec Command="tool.exe %(SourceFiles.FullPath)" WorkingDirectory="."/>

然后,它运行得很慢。

如果我调用命令行工具并一次性传递所有文件:

  <Exec Command="tool.exe @(SourceFiles -> '&quot;%(FullPath)&quot;', ' ')" WorkingDirectory="."/>

然后,如果文件太多,我会收到错误(我猜测命令行长度超过某个最大值)。

有没有办法可以对项目进行分块,以便可以多次调用该工具,每次最多可以为工具传递最大数量的源文件名?

1 个答案:

答案 0 :(得分:0)

我不知道有任何与众所周知的项目元数据相关的机制。您可以做的是将所有这些路径加载到它们自己的项目组中,并编写一个调用exec任务的自定义任务。编写自定义任务非常简单,可以内联完成:

http://msdn.microsoft.com/en-us/library/vstudio/dd722601(v=vs.100).aspx