Как сделать элементы 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>
Но мне это не нравится, потому что на самом деле у меня есть много правил, которые я хочу отключить, и перечисление их всех, как это, я хочу избежать.
Ответы
Ответ 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>