2010-06-09 7 views
12

observar el siguiente fragmento de una secuencia de comandos msbuild:¿Cómo hacer que los elementos de msbuild ItemGroup se separen con un espacio en lugar de un punto y coma?

<ItemGroup> 
    <R Include="-Microsoft.Design#CA1000" /> 
    <R Include="-Microsoft.Design#CA1002" /> 
</ItemGroup> 

quiero convertirlo en

/ruleid:-Microsoft.Design#CA1000 /ruleid:-Microsoft.Design#CA1002

Ahora, lo mejor que se me ocurrió es @(R -> '/ruleid:%(Identity)'), pero esto sólo rendimientos

/ruleid:-Microsoft.Design#CA1000;/ruleid:-Microsoft.Design#CA1002

Nota el punto y coma que separa th Las dos reglas, en lugar de un espacio. Esto es malo, no es reconocido por el fxcop. Necesito un espacio allí.

Ahora, esto es un ejemplo sencillo, por lo que sólo podría declarar algo como esto:

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

Pero, no me gusta esto, porque en realidad tengo muchas reglas que desee desactivar y una lista de todos de ellos es algo que deseo evitar.

Respuesta

20

Delimitar cada elemento mediante el uso de un carácter que no sea un punto y coma, utilice la sintaxis @(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> 
Cuestiones relacionadas