CreateItem y CreateProperty están obsoletos en MSBuild 3.5 (aunque siempre seguirán funcionando, por supuesto). Era bastante obvio que necesitábamos la misma sintaxis familiar para ItemGroup y PropertyGroup para trabajar dentro de los objetivos.
Pero ItemGroup dentro de un objetivo tiene algunos poderes especiales adicionales. Puede modificar elementos: por ejemplo, se agregará verdadero a todos los elementos en la lista de Recursos que tienen un metadato llamado Primario con valor de verdadero; solo si no existe ya Copiar metadatos:
<ItemGroup>
<Resources Condition=" '%(Primary)' == 'true' ">
<Copy Condition=" '%(Copy)' == '' ">true</Copy>
</Resources>
</ItemGroup>
Otro poder mágico: ahora puede eliminar elementos de una lista.En este ejemplo se va a eliminar todos los elementos de la lista de recursos que han Tipo de metadatos con un valor de mapa de bits:
<ItemGroup>
<Resources Condition=" '%(Type)'=='Bitmap' " Remove="@(Resources)"/>
</ItemGroup>
Estos poderes mágicos sólo funcionan en el interior en la actualidad, no afuera.
Para obtener todos los detalles de estas cosas, recomiendo encarecidamente el libro de Sayed Hashimi en MSBuild. Se encuentra fácilmente en Amazon.
Dan - equipo de msbuild.
¡Muchas gracias, esto es justo lo que quería saber! Tendré que echarle un vistazo a ese libro. – Jake
Sí, ese libro es genial, me encanta :) :) :) Gracias por el rec. –
Sin embargo, encontré una gran diferencia: CreateItem expandirá los comodines que se le asignan en Incluir a través de una operación de transformación como mientras que una declaración ItemGroup no lo expandirá . –