Compartilhar via


Itens do MSBuild

Os itens são entradas no sistema de compilação e geralmente representam arquivos. Itens são agrupados em tipos de item com base em seus nomes de elemento. Tipos de item são denominados listas de itens que podem ser usados como parâmetros para tarefas. As tarefas usam os valores do item para executar as etapas do processo de compilação.

Porque os itens são nomeados pelo tipo de item pertencem, os termos "item" e o "valor do item" podem ser usados alternadamente.

Criação de itens em um arquivo de projeto

Itens são declarados no arquivo de projeto, como elementos filho de um ItemGroup elemento. O nome do elemento filho é o tipo do item. O Include atributo do elemento Especifica os itens (arquivos) para ser incluído com esse tipo de item. Por exemplo, o XML a seguir cria um tipo de item chamado compilar, que inclui dois arquivos.

<ItemGroup>

<Compile Include = "file1.cs"/>

<Compile Include = "file2.cs"/>

</ItemGroup>

O item "file2.cs" não substitui o item "file1.cs"; em vez disso, ele é acrescentado à lista de valores para o Compile tipo de item. Um item não pode ser removido de um tipo de item durante a fase de avaliação de uma compilação.

O XML a seguir cria o mesmo tipo de item, declarando a ambos os arquivos em um Include atributo. Observe que os nomes de arquivo são separados por ponto e vírgula.

<ItemGroup>

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

</ItemGroup>

Criar itens durante a execução

Itens posicionados fora destino elementos são atribuídos valores durante a fase de avaliação de uma compilação. Durante a fase de execução subseqüente, os itens podem ser criados ou modificados da seguinte maneira:

  • Itens podem ser emitidas por qualquer tarefa. Emitir um item, o tarefa elemento deve ter um filho saída elemento que possui um ItemName atributo.

  • Itens podem ser emitidas pelo CreateItem tarefa. Este uso está obsoleto.

  • A partir do.NET Framework 3.5, Target elementos podem conter ItemGroup elementos que podem conter elementos de item.

Referenciar itens em um arquivo de projeto

Tipos de item são referenciados em todo o arquivo de projeto, usando a sintaxe @ (ItemType). Por exemplo, o tipo de item no exemplo anterior seria referenciado por meio de @(Compile). Esta sintaxe permite passar de itens para tarefas, especificando o tipo de item como um parâmetro da tarefa. Para obter mais informações, consulte How to: Selecione os arquivos de compilação.

Por padrão, os itens de um tipo de item são separados por ponto e vírgula (;) quando ele é expandido. Use a sintaxe @ (ItemType, 'separador') para especificar um separador diferente do padrão. Para obter mais informações, consulte How to: Exibir uma Lista de itens separados por Vírgulas.

Usando caracteres curinga para especificar os itens

Você pode usar o **, *, e? caracteres curinga para especificar um grupo de arquivos como entradas para uma compilação em vez de listar cada arquivo separadamente.

  • O? caractere curinga corresponde a um único caractere.

  • O * corresponde a zero ou mais caracteres caractere curinga.

  • O ** um caminho parcial corresponde a seqüência de caracteres curinga.

Por exemplo, para especificar todos os arquivos. cs no diretório que contém o arquivo de projeto, use o seguinte elemento no arquivo de projeto.

<CSFile Include="*.cs"/>

Um elemento que seleciona todos os arquivos. vb na unidade d: unidade seria

<VBFile Include="D:/**/*.vb"/>.

Para obter mais informações sobre caracteres curinga, consulte How to: Selecione os arquivos de compilação.

Usando o atributo de exclusão

Elementos de item podem conter o Exclude atributo, que exclui itens específicos (arquivos) do tipo de item. O Exclude atributo normalmente é usado junto com todos os caracteres curinga. Por exemplo, o XML a seguir adiciona cada arquivo. cs no diretório para o tipo de item de CSFile, exceto o DoNotBuild.cs arquivo.

<ItemGroup>

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

</ItemGroup>

O Exclude atributo afeta somente os itens adicionados pela Include atributo no elemento item que contém as duas. Por exemplo,

<Compile Include="*.cs" />

<Compile Include="*.res" Exclude="Form1.cs">

não seria excluir o arquivo Form1. cs, que foi adicionado no elemento item anterior.

Para obter mais informações, consulte How to: Excluir arquivos da compilação.

Usando o atributo remover

A partir do.NET Framework 3.5, Target elementos podem conter ItemGroup elementos que podem conter elementos de item. Esses elementos de item podem conter o Remove atributo, que remove itens específicos (arquivos) do tipo de item. Por exemplo, o XML a seguir remove todos os arquivos. config o tipo de item de compilação.

<Target>

<ItemGroup>

<Compile Remove="*.config"/>

</ItemGroup>

</Target>

Metadados de item

Itens que podem conter metadados, além de serem as informações obtidas de Include e Exclude atributos. Esses metadados podem ser usados pelas tarefas que exigem mais informações sobre os itens ou para destinos e tarefas em lote. Para obter mais informações sobre o processamento em lotes, consulte Processamento em lotes do MSBuild.

Metadados são uma coleção de pares chave-valor que são declarados no arquivo de projeto, como os elementos filho de um elemento de item. O nome do elemento filho é o nome dos metadados e o valor do elemento filho é o valor dos metadados.

Os metadados são associado com o elemento de item que o contém. Por exemplo, o XML a seguir adiciona Culture metadados que possui o valor Fr para ambos os "one.cs" e "two.cs" itens do CSFile tipo de item.

<ItemGroup>

<CSFile Include="one.cs;two.cs">

<Culture>Fr</Culture>

</CSFile>

</ItemGroup>

Um item pode ter zero ou mais valores de metadados. Os valores de metadados podem ser alterados a qualquer momento. A definição de metadados para um valor vazio efetivamente remove da compilação.

Referência de metadados de Item em um arquivo de projeto

Item os metadados podem ser referenciados em todo o arquivo de projeto, usando a sintaxe %(ItemMetadataName). Quando existe a ambigüidade, isso pode ser qualificado usando o nome do tipo de item, por exemplo, %(ItemType.ItemMetaDataName).O exemplo a seguir usa os metadados de vídeo para a tarefa de mensagem de lote. Para obter mais informações sobre como usar os metadados de item para o processamento em lotes, consulte Metadados de item em lotes de tarefa.

<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>

Metadados de Item conhecidos

Quando um item é adicionado a um tipo de item, esse item é atribuído a alguns metadados conhecidos. Por exemplo, todos os itens têm os metadados conhecidos %(Filename) cujo valor é o nome do arquivo do item. Para obter uma lista de metadados do item já conhecidos, consulte MSBuild conhecidos metadados de Item.

Transformando os tipos de Item usando metadados

Item listas podem ser transformadas em novas listas de itens usando metadados. Por exemplo, um tipo de item CppFiles que tem itens que representam os arquivos podem ser transformados em uma lista correspondente de arquivos. obj, utilizando a expressão de cpp @(CppFiles -> '%(Filename).obj').

O código a seguir cria um CultureResource o tipo de item que contém cópias de todas as EmbeddedResource itens com Culture metadados. O Culture o valor de metadados torna-se o valor dos novos metadados CultureResource.TargetDirectory.

<Target Name="ProcessCultureResources">
  <ItemGroup>
    <CultureResource Include="@(EmbeddedResource)"
       Condition="'%(EmbeddedResource.Culture)' != ''">
       <TargetDirectory>%(EmbeddedResource.Culture) </TargetDirectory>
    </CultureResource>
  </ItemGroup>
</Target>

Para obter mais informações, consulte Transformações do MSBuild.

Definições de item

A partir do.NET Framework 3.5, o ItemDefinitionGroup elemento permite que você adicione padrão de metadados a qualquer tipo de item. Como metadados conhecidos, os metadados padrão estão associado a todos os itens do tipo item especificado. Metadados de padrão podem ser substituídos explicitamente em uma definição de item. Por exemplo, o XML a seguir fornece o Compile itens "one.cs" e "three.cs" os metadados BuildDay com o valor "Segunda-feira" e fornece o item "two.cs" os metadados BuildDay com o valor "Terça-feira".

<ItemDefinitionGroup>
  <Compile>
    <BuildDay>Monday</BuildDay>
  </Compile>
</ItemDefinitionGroup>
<ItemGroup>
  <Compile Include="one.cs;three.cs" />
  <Compile Include="two.cs">
    <BuildDay>Tuesday</BuildDay>
  </Compile>
</ItemGroup>

Para obter mais informações, consulte Definições de item.

Consulte também

Tarefas

How to: Selecione os arquivos de compilação

How to: Excluir arquivos da compilação

How to: Exibir uma Lista de itens separados por Vírgulas

Referência

Elemento de item (MSBuild)

Conceitos

Definições de item

Processamento em lotes do MSBuild

Outros recursos

Conceitos do MSBuild

MSBuild Overview