开发者

Create an ItemGroup of strings in MSBuild

开发者 https://www.devze.com 2023-01-11 16:18 出处:网络
I want to create an \"ItemGroup\" of arbitrary strings / names in order to use MSBuild transforms, for example:

I want to create an "ItemGroup" of arbitrary strings / names in order to use MSBuild transforms, for example:

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

I then wish to pass a transform of these categories into a console app, e.g.:

/c @(Categories, ' /c ')

The reason why I say "ItemGroup" in quotes, is because I'm not sure whether or not it is applicable for me to use ItemGroups in this way - as far as I can see nothing in the documentation states that ItemGroups must be files, however using the above results in an error message due to missing mandatory "Include" attribute.

  • Is there a way of doi开发者_StackOverflow中文版ng the above using ItemGroups?
  • Alternatively is there a better way of achieving the above without using ItemGroups?


You can use arbitrary string as well as files in Item, but you must use this syntax :

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

The only difference when you use Item with arbitrary string is that some metadata will be meaningless. (%(Categories.FullPath) for example)

You can then use your Item to execute a command like this :

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

  <!-- Using transformation -->
  <Exec Command="YourProgram.exe @(Categories -> '/c %(Identity)')"/>
</Target>
0

精彩评论

暂无评论...
验证码 换一张
取 消