Compartilhar via


Elemento item (MSBuild)

Contém um item definido pelo usuário e seus metadados. Cada item usado em um projeto do MSBuild deve ser especificado como um filho de um ItemGroup elemento.

<Projeto>
  <ItemGroup>
   <Item>

Sintaxe

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

Especificar metadados como atributos

Você pode especificar metadados de item como atributos para elementos filho. Todos os metadados com um nome que não esteja em conflito com a lista atual de atributos podem ser expressos como um atributo.

Por exemplo, para especificar uma lista de pacotes NuGet, você normalmente usaria algo como a sintaxe a seguir.

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

Agora, no entanto, você pode passar os Version metadados como um atributo, como na seguinte sintaxe:

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

Atributos e elementos

As seções a seguir descrevem atributos, elementos filho e elementos pai.

Attributes

Attribute Description
Include Atributo opcional.

O arquivo ou curinga a ser incluído na lista de itens.
Exclude Atributo opcional.

O arquivo ou curinga a ser excluído da lista de itens.
Condition Atributo opcional.

A condição a ser avaliada. Para obter mais informações, consulte Condições.
Remove Atributo opcional.

O arquivo ou curinga a ser removido da lista de itens.

MatchOnMetadata Atributo opcional.

Modifica atributos Remove que fazem referência a outros itens para corresponder aos nomes de metadados especificados em vez de corresponderem aos valores dos itens referenciados.

Esse atributo só será válido se for especificado junto com um Remove atributo que contém apenas referências a outros itens (por exemplo, Remove="@(Compile);@(Content)"). Mais detalhes em Itens.
MatchOnMetadataOptions Atributo opcional.

Especifica a estratégia de correspondência de cadeia de caracteres usada por MatchOnMetadata. Os valores possíveis são CaseSensitive, CaseInsensitive, ou PathLike. O valor padrão é CaseInsensitive.
KeepDuplicates Atributo opcional.

Especifica se um item deve ser adicionado ao grupo de destino se for uma duplicata exata de um item existente. Se o item de origem e de destino tiver o mesmo Include valor, mas metadados diferentes, o item será adicionado mesmo que KeepDuplicates esteja definido como false. Para obter mais informações, consulte Itens.

Esse atributo só será válido se for especificado para um item em um ItemGroup que esteja em um Target.
KeepMetadata Atributo opcional.

Os metadados dos itens de origem a serem adicionados aos itens de destino. Somente os metadados cujos nomes são especificados na lista delimitada por ponto-e-vírgula são transferidos de um item de origem para um item de destino. Para obter mais informações, consulte Itens.

Esse atributo só será válido se for especificado para um item em um ItemGroup que esteja em um Target.
RemoveMetadata Atributo opcional.

Os metadados dos itens de origem para não serem transferidos para os itens de destino. Todos os metadados são transferidos de um item de origem para um item de destino, exceto metadados cujos nomes estão contidos na lista delimitada por ponto-e-vírgula de nomes. Para obter mais informações, consulte Itens.

Esse atributo só será válido se for especificado para um item em um ItemGroup que esteja em um Target.
Update Atributo opcional. (Disponível apenas para projetos do .NET Core no Visual Studio 2017 ou posterior.)

Permite modificar metadados de um item; normalmente usado para substituir os metadados padrão de itens específicos depois que um grupo de itens é especificado inicialmente (como com um curinga).

Esse atributo só será válido se for especificado para um item em um ItemGroup que não esteja em um Target.

Elementos filho

Elemento Description
ItemMetadata Uma chave de metadados de item definida pelo usuário, que contém o valor dos metadados do item. Pode haver zero ou mais ItemMetadata elementos em um item.

O MSBuild interpreta elementos filho em elementos de item como metadados de item.

Elementos pai

Elemento Description
ItemGroup Elemento de agrupamento para itens.

Observações

Item os elementos definem entradas no sistema de build e são agrupados em coleções de itens com base em seus nomes de coleção definidos pelo usuário. Essas coleções de itens podem ser usadas como parâmetros para tarefas, que usam os itens individuais nas coleções para executar as etapas do processo de build. Para obter mais informações, consulte Itens.

O uso da notação @(<myType>) permite que uma coleção de itens do tipo <myType> seja expandida para uma lista delimitada por ponto-e-vírgula de cadeias de caracteres e passada para um parâmetro. Se o parâmetro for do tipo string, o valor do parâmetro será a lista de elementos, separados por ponto-e-vírgula. Se o parâmetro for uma matriz de cadeias de caracteres (string[]), cada elemento será inserido na matriz com base no local dos ponto e vírgula. Se o parâmetro de tarefa for do tipo ITaskItem[], o valor será o conteúdo da coleção de itens junto com os metadados anexados. Para delimitar cada item usando um caractere diferente de um ponto-e-vírgula, use a sintaxe @(<myType>, '<separador>').

O mecanismo MSBuild pode avaliar curingas como * curingas e ? recursivos, como /**/*.cs. Para obter mais informações, consulte Itens.

Exemplos

O exemplo de código a seguir mostra como declarar dois itens do tipo CSFile. O segundo item declarado contém metadados definidos MyMetadata como HelloWorld.

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

O exemplo de código a seguir mostra como usar o Update atributo para modificar os metadados em um arquivo chamado somefile.cs que foi incluído por meio de um glob. (Disponível apenas para projetos do .NET Core no Visual Studio 2017 ou posterior.)

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

Consulte também