Condividi tramite


Elementi MSBuild

Aggiornamento: novembre 2007

Gli elementi rappresentano gli input destinati al sistema di generazione che vengono raggruppati in insiemi di elementi in base ai nomi degli insiemi definiti dall'utente. Tali insiemi possono essere utilizzati come parametri per le attività, che utilizzano a loro volta i singoli elementi in essi contenuti per eseguire i passaggi del processo di generazione.

Creazione di elementi in un file di progetto

Per dichiarare gli elementi in un file di progetto, è necessario creare, come figlio di un elemento ItemGroup, un elemento con lo stesso nome dell'elemento. L'attributo Include dell'elemento specifica quali file includere nell'insieme di elementi. Il codice riportato di seguito, ad esempio, crea un insieme di elementi denominato Compile che include due file.

<ItemGroup>
    <Compile Include = "file1.cs"/>
    <Compile Include = "file2.cs"/>
</ItemGroup>

Il codice seguente crea lo stesso insieme di elementi dichiarando entrambi i file in un attributo Include, separati da un punto e virgola.

<ItemGroup>
    <Compile Include = "file1.cs;file2.cs"/>
</ItemGroup>

Riferimento a elementi in un file di progetto

La sintassi @(ItemCollectionName) consente di fare riferimento agli insiemi di elementi nell'intero file di progetto. È possibile, ad esempio, fare riferimento all'insieme di elementi dell'esempio precedente utilizzando @(Compile). Questa sintassi permette di passare gli insiemi di elementi alle attività specificando l'insieme di elementi come parametro dell'attività. Per ulteriori informazioni, vedere Procedura: utilizzare caratteri jolly per compilare tutti i file di una directory.

Per impostazione predefinita, gli elementi di un insieme di elementi sono separati da punti e virgole (;) quando vengono espansi. Per specificare un separatore diverso da quello predefinito, utilizzare la sintassi @(NomeInsiemeElementi, 'separatore'). Per ulteriori informazioni, vedere Procedura: visualizzare un insieme di elementi separati da virgole.

Utilizzo di caratteri jolly per specificare gli elementi

È possibile utilizzare i caratteri jolly **, * e ? per specificare un gruppo di file come input per una generazione anziché elencare ogni file separatamente. Ad esempio, per specificare tutti i file .cs o .vb nella stessa directory come file di progetto, utilizzare nel file di progetto uno dei seguenti elementi:

<CSFile Include="*.cs"/>

Oppure

<VBFile Include="*.vb"/>

Nota:

È possibile utilizzare i caratteri jolly solo per specificare gli input per una generazione. Ad esempio, non è possibile utilizzare i caratteri jolly per specificare gli input nel parametro Sources dell'attività Csc. I caratteri jolly verranno accettati da MSBuild come valori di parametro, ma saranno considerati come stringhe letterali e non verranno valutati. Nell'esempio riportato di seguito, la stringa letterale *.cs viene utilizzata come valore di parametro Sources.

<Target Name="Compile">
    <CSC Sources="*.cs" />
</Target>

Per ulteriori informazioni sui caratteri jolly, vedere Procedura: utilizzare caratteri jolly per compilare tutti i file di una directory.

Utilizzo dell'attributo Exclude

Gli elementi possono anche contenere l'attributo Exclude, il quale esclude file specifici dall'insieme degli elementi. L'attributo Exclude si rivela utile quando viene utilizzato insieme ai caratteri jolly. Ad esempio, il codice seguente aggiunge tutti i file .cs alla directory, ad eccezione del file DoNotBuild.cs.

<ItemGroup>
    <CSFile
        Include="*.cs"
        Exclude="DoNotBuild.cs"/>
</ItemGroup>

Per ulteriori informazioni, vedere Procedura: compilare tutti i file di una directory tranne uno.

Metadati degli elementi

Oltre alle informazioni raccolte dagli attributi Include e Exclude, gli elementi possono contenere anche metadati. È possibile utilizzare i metadati nelle attività che necessitano di maggiori informazioni sugli elementi o per dividere in batch attività e destinazioni. Per ulteriori informazioni sulla divisione in batch, vedere Batch MSBuild.

Per dichiarare i metadati di elemento nel file di progetto, è necessario creare, come figlio di un elemento, un elemento con lo stesso nome dei metadati. Un elemento può contenere zero o più valori di metadati. Ad esempio, l'elemento seguente contiene i metadati Culture con un valore di Fr.

<ItemGroup>
    <CSFile Include="main.cs">
        <Culture>Fr</Culture>
    </CSFile>
</ItemGroup>

Riferimento ai metadati degli elementi in un file di progetto

La sintassi %(ItemMetadataName) consente di fare riferimento ai metadati degli elementi nell'intero file di progetto. In caso di ambiguità, è possibile utilizzare il nome dell'insieme di elementi per aumentare la precisione, ad esempio %(NomeInsiemeElementi.NomeMetadatiElementi).Nell'esempio seguente vengono utilizzati i metadati Display per dividere in batch l'attività Message. Per ulteriori informazioni sull'utilizzo dei metadati degli elementi per la divisione in batch, vedere Procedura: creare batch di attività tramite i metadati degli elementi.

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <Stuff Include="One.cs" >
            <Display>false</Display>
        </Stuff>
        <Stuff Include="Two.cs">
            <Display>true</Display>
        </Stuff>
    </ItemGroup>
    <Target Name="Batching">
        <Message Text="@(Stuff)" Condition=" '%(Display)' == 'true' "/>
    </Target>
</Project>

Metadati di elementi noti

Ogni volta che un elemento viene aggiunto a un insieme di elementi, l'elemento viene creato e assegnato ad alcuni metadati di elementi noti, ad esempio %(Filename) che contiene il nome file dell'elemento. Per un elenco completo di tutti i metadati di elemento noti, vedere Metadati noti degli elementi di MSBuild.

Trasformazione degli insiemi di elementi

Gli insiemi di elementi possono essere trasformati in nuovi insiemi di elementi. Ad esempio, un insieme di elementi di file CPP può essere trasformato in un insieme di file OBJ utilizzando un'espressione come @(CppFiles -> '%(Filename).obj'). Per ulteriori informazioni, vedere Trasformazioni di MSBuild.

Vedere anche

Attività

Procedura: utilizzare caratteri jolly per compilare tutti i file di una directory

Procedura: compilare tutti i file di una directory tranne uno

Concetti

Batch MSBuild

Attività di MSBuild

Riferimenti

Elemento ItemGroup (MSBuild)

Elemento Item (MSBuild)

Elemento ItemMetadata (MSBuild)

Metadati noti degli elementi di MSBuild