代码之家  ›  专栏  ›  技术社区  ›  mark

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

  •  13
  • mark  · 技术社区  · 15 年前

    观察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 回复  |  直到 15 年前
        1
  •  22
  •   Julien Hoarau    15 年前

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