如何使msbuild ItemGroup项用空格而不是分号分隔?

mar*_*ark 14 msbuild

观察以下msbuild脚本:

<ItemGroup>
  <R Include="-Microsoft.Design#CA1000" />
  <R Include="-Microsoft.Design#CA1002" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

我想把它转换成

/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>
Run Code Online (Sandbox Code Playgroud)

但是,我不喜欢这个,因为实际上我有许多规则我希望禁用并列出所有这些规则,这是我希望避免的.

Jul*_*rau 22

要使用分号以外的字符分隔每个项目,请使用语法 @(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>
Run Code Online (Sandbox Code Playgroud)