1

我想创建一个任意字符串/名称的“ItemGroup”,以便使用 MSBuild 转换,例如:

<ItemGroup>
    <Categories>First</Categories>
    <Categories>Second</Categories>
</ItemGroup>

然后我希望将这些类别的转换传递给控制台应用程序,例如:

/c @(Categories, ' /c ')

我之所以在引号中说“ItemGroup”,是因为我不确定以这种方式使用 ItemGroups 是否适用于我——据我所知,文档中没有任何内容表明 ItemGroups必须是文件,但是,由于缺少必需的“包含”属性,使用上述方法会导致错误消息。

  • 有没有办法使用 ItemGroups 完成上述操作?
  • 或者,是否有更好的方法来实现上述目标而不使用 ItemGroups?
4

1 回答 1

7

您可以在 中使用任意字符串以及文件Item,但必须使用以下语法:

<ItemGroup>
  <Categories Include="First"/>
  <Categories Include="Second"/>
</ItemGroup>

与任意字符串一起使用时的唯一区别Item是某些元数据将毫无意义。(%(Categories.FullPath)例如)

然后,您可以使用您的 Item 执行如下命令:

<Target Name="ExecCommand">
  <Exec Command="YourProgram.exe /c @(Categories, ' /c ')"/>

  <!-- Using transformation -->
  <Exec Command="YourProgram.exe @(Categories -> '/c %(Identity)')"/>
</Target>
于 2010-08-17T05:19:07.133 回答