Nuovi metodi per la modifica di elementi e proprietà (MSBuild)
Aggiornamento: novembre 2007
Da MSBuild 3.5, è possibile effettuare le operazioni seguenti:
Definire un gruppo di definizione degli elementi che contenga metadati che si applicano a tutti gli elementi nel progetto.
Creare, eliminare, combinare o modificare dinamicamente le proprietà, gli elementi e i metadati dell'elemento direttamente in un gruppo di elementi. È possibile eseguire queste operazioni anziché utilizzare le attività CreateItem e CreateProperty.
Gruppi di definizione di elementi
L'elemento ItemDefinitionGroup consente di definire un insieme di definizioni di elementi, valori di metadati applicati a tutti gli elementi nel progetto per impostazione predefinita. Per ulteriori informazioni, vedere Definizioni degli elementi.
Modifica dinamica di metadati in un gruppo di elementi
In MSBuild vengono utilizzati l'Elemento ItemGroup (MSBuild) e l'Elemento PropertyGroup (MSBuild) per dichiarare staticamente elementi e proprietà. In MSBuild 2.0, quando si desidera creare o modificare proprietà ed elementi durante la compilazione, è necessario utilizzare Attività CreateItem o Attività CreateProperty. Questo processo è ingombrante e non ha supportato efficacemente gli aggiornamenti dinamici. MSBuild 3.5 consente di creare, eliminare, combinare o modificare dinamicamente le proprietà, gli elementi e i metadati dell'elemento direttamente in un gruppo di elementi.
Si confrontino gli esempi riportati di seguito. Nell'esempio 1 viene illustrato come utilizzare l'attività CreateItem per aggiungere un parametro dell'attività e creare un nuovo elenco di elementi insieme ai metadati. Nell'esempio 3 viene illustrato il nuovo metodo di aggiunta diretta di metadati nell'ItemGroup.
Esempio 1: semplice esempio di aggiunta di un parametro dell'attività utilizzando l'attività CreateItem. La prima destinazione utilizza l'attività CreateItem per creare dinamicamente un nuovo elenco di elementi denominato CultureResource. La seconda destinazione aggiunge nuovi metadati, denominati TargetDirectory, per tutte le risorse di Impostazioni cultura nell'elenco originale.
<Target Name="GenerateBeforeCompile">
<CreateItem Include="SomeGeneratedCode.cs">
<Output TaskParameter="Include" ItemName="Compile" />
</CreateItem>
</Target>
<Target Name="ProcessCultureResources">
<CreateItem Include="@(EmbeddedResource)"
Condition="'%(Culture)' != ''"
AdditionalMetadata="TargetDirectory=%
(EmbeddedResource.Culture)">
<Output TaskParameter="Include" ItemName="CultureResource" />
</CreateItem>
</Target>
Esempio 2: i risultati degli esempi precedenti ora possono essere realizzati aggiungendo direttamente parametri e metadati in ItemGroup.
<Target Name="GenerateBeforeCompile">
<ItemGroup>
<Compile Include="SomeGeneratedCode.cs" />
</ItemGroup>
</Target>
<Target Name="ProcessCultureResources">
<ItemGroup>
<CultureResource Include="@(EmbeddedResource)"
Condition="'%(EmbeddedResource.Culture)' != ''">
<TargetDirectory>%(EmbeddedResource.Culture) </TargetDirectory>
</CultureResource>
</ItemGroup>
</Target>
Rimozione di elementi
Per omettere elementi dagli elenchi in versioni precedenti di MSBuild è necessario creare nuovi elenchi. Tuttavia, è ora possibile rimuovere direttamente gli elementi utilizzando il nuovo parametro Remove, come illustrato di seguito:
<ItemGroup>
<!—Remove *.licx from the EmbeddedResource list - ->
<EmbeddedResource Remove="*.licx" />
<!—Or remove items in @(licx) from EmbeddedResource list -- >
<EmbeddedResource Remove="@(licx)" />
</ItemGroup>
Vedere anche
Concetti
Riferimenti dello schema del file di progetto MSBuild