Как сделать так, чтобы элементы msbuild ItemGroup разделялись пробелом, а не точкой с запятой?

Обратите внимание на следующий фрагмент скрипта msbuild:

<ItemGroup>
  <R Include="-Microsoft.Design#CA1000" />
  <R Include="-Microsoft.Design#CA1002" />
</ItemGroup>

Я хочу преобразовать его в

/ruleid:-Microsoft.Design#CA1000 /ruleid:-Microsoft.Design#CA1002

Лучшее, что я придумал, это @(R -> '/ruleid:%(Identity)'), но это дает только

/ruleid:-Microsoft.Design#CA1000;/ruleid:-Microsoft.Design#CA1002

Обратите внимание на точку с запятой, разделяющую два правила вместо пробела. Это плохо, фкскоп не распознает - мне нужен там пробел.

Теперь это простой пример, поэтому я мог бы просто объявить что-то вроде этого:

<PropertyGroup>
  <R>/ruleid:-Microsoft.Design#CA1000 /ruleid:-Microsoft.Design#CA1002</R
</PropertyGroup>

Но мне это не нравится, потому что на самом деле у меня есть много правил, которые я хочу отключить, и я не хочу перечислять их все таким образом.


person mark    schedule 09.06.2010    source источник


Ответы (1)


Чтобы разделить каждый элемент с помощью символа, отличного от точки с запятой, используйте синтаксис @(myType, 'separator')

<ItemGroup>
  <R Include="-Microsoft.Design#CA1000" />
  <R Include="-Microsoft.Design#CA1002" />
</ItemGroup>

<Target Name="FxcopRulesFlattening">
  <!-- Using the syntax @(ItemName, 'Separator')-->
  <Message Text="@(R -> '/ruleid:%(Identity)', ' ')"/>
</Target>
person Julien Hoarau    schedule 10.06.2010