Создать 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>