Подтвердить что ты не робот

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

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

<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

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

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

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

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

4b9b3361

Ответ 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>