CreateItem e CreateProperty sono obsolete in MSBuild 3.5 (sebbene continueranno sempre a funzionare, ovviamente). Era abbastanza ovvio che avevamo bisogno della stessa sintassi familiare per ItemGroup e PropertyGroup per funzionare all'interno delle destinazioni.
Ma Gruppo Oggetti all'interno di un bersaglio ha alcuni poteri speciali extra. Può modificare gli elementi: ad esempio, questo aggiungerà true a tutti gli elementi nell'elenco Risorse che hanno un metadato denominato Primario con valore di true; solo se non è già Copia metadati:
<ItemGroup>
<Resources Condition=" '%(Primary)' == 'true' ">
<Copy Condition=" '%(Copy)' == '' ">true</Copy>
</Resources>
</ItemGroup>
Un altro potere magico: ora è possibile rimuovere gli elementi da un elenco.Questo esempio rimuoverà tutte le voci dalla lista delle risorse che hanno i metadati Tipo con il valore di bitmap:
<ItemGroup>
<Resources Condition=" '%(Type)'=='Bitmap' " Remove="@(Resources)"/>
</ItemGroup>
Questi poteri magici funzionano solo dentro al momento, non al di fuori.
Per i dettagli completi di questa roba, consiglio vivamente il libro di Sayed Hashimi su MSBuild. Si trova facilmente su Amazon.
Dan - team msbuild.
fonte
2009-06-27 06:46:56
Grazie mille, questo è proprio quello che volevo sapere! Dovrò controllare quel libro. – Jake
Sì, quel libro è fantastico, lo adoro :) :) :) Grazie per il rec. –
Tuttavia ho trovato una grande differenza: CreateItem espande i caratteri jolly dati in Includi tramite un'operazione di trasformazione come mentre una dichiarazione ItemGroup non la espande . –