Condividi tramite


Elemento Item (MSBuild)

Contiene un elemento definito dall'utente e i relativi metadati. Ogni elemento utilizzato in un progetto MSBuild deve essere specificato come elemento figlio di un ItemGroup elemento.

<Progetto>
  <ItemGroup>
   <Articolo>

Sintassi

<Item Include="*.cs"
        Exclude="MyFile.cs"
        Condition="'String A'=='String B'">
    <ItemMetadata1>...</ItemMetadata1>
    <ItemMetadata2>...</ItemMetadata2>
</Item>

Specificare i metadati come attributi

È possibile specificare i metadati dell'elemento come attributi per come elementi figlio. Tutti i metadati con un nome che non è in conflitto con l'elenco corrente di attributi possono essere espressi come attributo.

Ad esempio, per specificare un elenco di pacchetti NuGet, in genere si usa una sintassi simile alla seguente.

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json">
    <Version>9.0.1-beta1<Version>
  </PackageReference>
</ItemGroup>

È tuttavia possibile passare i Version metadati come attributo, ad esempio nella sintassi seguente:

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json" Version="9.0.1-beta1" />
</ItemGroup>

Attributi ed elementi

Le sezioni seguenti descrivono attributi, elementi figlio ed elementi padre.

Attributes

Attribute Description
Include Attributo facoltativo.

File o carattere jolly da includere nell'elenco di elementi.
Exclude Attributo facoltativo.

File o carattere jolly da escludere dall'elenco di elementi.
Condition Attributo facoltativo.

Condizione da valutare. Per altre informazioni, vedere Condizioni.
Remove Attributo facoltativo.

File o carattere jolly da rimuovere dall'elenco di elementi.

MatchOnMetadata Attributo facoltativo.

Remove Modifica gli attributi che fanno riferimento ad altri elementi in modo che corrispondano ai nomi di metadati specificati invece di corrispondere ai valori degli elementi a cui si fa riferimento.

Questo attributo è valido solo se viene specificato insieme a un Remove attributo che contiene solo riferimenti ad altri elementi , ad esempio Remove="@(Compile);@(Content)". Altri dettagli in Elementi.
MatchOnMetadataOptions Attributo facoltativo.

Specifica la strategia di corrispondenza delle stringhe utilizzata da MatchOnMetadata. I valori possibili sono CaseSensitive, CaseInsensitiveo PathLike. Il valore predefinito è CaseInsensitive.
KeepDuplicates Attributo facoltativo.

Specifica se un elemento deve essere aggiunto al gruppo di destinazione se è un duplicato esatto di un elemento esistente. Se l'elemento di origine e di destinazione ha lo stesso Include valore ma metadati diversi, l'elemento viene aggiunto anche se KeepDuplicates è impostato su false. Per altre informazioni, vedere Items.

Questo attributo è valido solo se è specificato per un elemento in un ItemGroup oggetto che si trova in un oggetto Target.
KeepMetadata Attributo facoltativo.

Metadati per gli elementi di origine da aggiungere agli elementi di destinazione. Solo i metadati i cui nomi vengono specificati nell'elenco delimitato da punto e virgola vengono trasferiti da un elemento di origine a un elemento di destinazione. Per altre informazioni, vedere Items.

Questo attributo è valido solo se è specificato per un elemento in un ItemGroup oggetto che si trova in un oggetto Target.
RemoveMetadata Attributo facoltativo.

Metadati per gli elementi di origine da non trasferire agli elementi di destinazione. Tutti i metadati vengono trasferiti da un elemento di origine a un elemento di destinazione, ad eccezione dei metadati i cui nomi sono contenuti nell'elenco di nomi delimitati da punto e virgola. Per altre informazioni, vedere Items.

Questo attributo è valido solo se è specificato per un elemento in un ItemGroup oggetto che si trova in un oggetto Target.
Update Attributo facoltativo. Disponibile solo per i progetti .NET Core in Visual Studio 2017 o versione successiva.

Consente di modificare i metadati di un elemento; in genere usato per eseguire l'override dei metadati predefiniti di elementi specifici dopo che inizialmente viene specificato un gruppo di elementi, ad esempio con un carattere jolly.

Questo attributo è valido solo se è specificato per un elemento in un ItemGroup oggetto che non si trova in un oggetto Target.

Elementi figlio

Elemento Description
ItemMetadata Chiave di metadati dell'elemento definita dall'utente, che contiene il valore dei metadati dell'elemento. In un elemento possono essere presenti zero o più ItemMetadata elementi.

MSBuild interpreta gli elementi figlio sugli elementi dell'elemento come metadati dell'elemento.

Elementi padre

Elemento Description
ItemGroup Elemento di raggruppamento per gli elementi.

Osservazioni:

Item gli elementi definiscono gli input nel sistema di compilazione e vengono raggruppati in raccolte di elementi in base ai relativi nomi di raccolta definiti dall'utente. Queste raccolte di elementi possono essere usate come parametri per le attività, che usano i singoli elementi nelle raccolte per eseguire i passaggi del processo di compilazione. Per altre informazioni, vedere Items.

L'uso della notazione @(<myType>) consente l'espansione di una raccolta di elementi di tipo <myType> in un elenco di stringhe delimitato da punto e virgola e passato a un parametro. Se il parametro è di tipo string, il valore del parametro è l'elenco di elementi, separati da punti e virgola. Se il parametro è una matrice di stringhe (string[]), ogni elemento viene inserito nella matrice in base alla posizione dei punti e virgola. Se il parametro dell'attività è di tipo ITaskItem[], il valore è il contenuto della raccolta di elementi insieme a tutti i metadati associati. Per delimitare ogni elemento usando un carattere diverso da un punto e virgola, usare la sintassi @(<myType>, '<separator>').

Il motore MSBuild può valutare caratteri jolly, * ad esempio e e ? caratteri jolly ricorsivi, ad esempio /**/*.cs. Per altre informazioni, vedere Items.

Esempi

Nell'esempio di codice seguente viene illustrato come dichiarare due elementi di tipo CSFile. Il secondo elemento dichiarato contiene metadati MyMetadata impostati su HelloWorld.

<ItemGroup>
    <CSFile Include="engine.cs; form.cs" />
    <CSFile Include="main.cs" >
        <MyMetadata>HelloWorld</MyMetadata>
    </CSFile>
</ItemGroup>

Nell'esempio di codice seguente viene illustrato come usare l'attributo Update per modificare i metadati in un file denominato somefile.cs incluso tramite un glob. Disponibile solo per i progetti .NET Core in Visual Studio 2017 o versione successiva.

<ItemGroup>
    <Compile Update="somefile.cs">  // or Update="*.designer.cs"
        <MetadataKey>MetadataValue</MetadataKey>
    </Compile>
</ItemGroup>

Vedere anche