Как сделать так, чтобы элементы msbuild ItemGroup были разделены пробелом, а не точкой с запятой? - PullRequest
13 голосов
/ 09 июня 2010

Обратите внимание на следующий фрагмент сценария 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

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

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

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

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

1 Ответ

22 голосов
/ 10 июня 2010

Чтобы разделить каждый элемент с помощью символа, отличного от точки с запятой, используйте синтаксис @(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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...