Создать ItemGroup строк в MSBuild

Я хочу создать "ItemGroup" из произвольных строк / имен для использования преобразований MSBuild, например:

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

Затем я хочу передать преобразование этих категорий в консольное приложение, например:

/c @(Categories, ' /c ')

Причина, по которой я говорю "ItemGroup" в кавычках, заключается в том, что я не уверен, применимо ли для меня использование ItemGroups таким образом - насколько я ничего не вижу в документации, говорится, что ItemGroups должны быть файлами, однако использование приведенных выше результатов приводит к сообщению об ошибке из-за отсутствия обязательного атрибута "Включить".

  • Есть ли способ сделать выше, используя ItemGroups?
  • В качестве альтернативы есть лучший способ достижения вышеупомянутого без использования ItemGroups?

1 ответ

Решение

Вы можете использовать произвольную строку, а также файлы в 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>
Другие вопросы по тегам