Destinos do MSBuild

Destinos agrupar tarefas em uma determinada ordem e permitir que o processo de compilação ser decomposto em unidades menores. Por exemplo, um destino pode excluir todos os arquivos no diretório de saída para se preparar para a compilação, enquanto outro compila as entradas para o projeto e coloca-os no diretório vazio. Para obter mais informações sobre tarefas, consulte Tarefas do MSBuild.

Declarando destinos no arquivo de projeto

Destinos são declarados em um arquivo de projeto com o destino elemento. Por exemplo, o XML a seguir cria um destino chamado de construção, que chama a tarefa Csc com o tipo de item de compilação.

<Target Name="Construct">

<Csc Sources="@(Compile)" />

</Target>

Como propriedades do MSBuild, destinos podem ser redefinidos. Por exemplo,

<Target Name="AfterBuild" >

<Message Text="First occurrence" />

</Target>

<Target Name="AfterBuild" >

<Message Text="Second occurrence" />

</Target>

Se AfterBuild for executado, ele exibe somente "segunda ocorrência".

Ordem de compilação de destino

Destinos devem ser encomendados se a entrada para um destino depende da saída de outro destino. Há várias maneiras para especificar a ordem na quais destinos executados.

  • Metas iniciais

  • Destinos padrão

  • Primeiro destino

  • Dependências do destino

  • BeforeTargetse AfterTargets (MSBuild 4.0)

Um destino nunca executa duas vezes durante uma única compilação, mesmo se um destino subseqüente na compilação depende dele. Depois que um destino é executado, sua contribuição para a compilação foi concluída.

Para obter mais informações sobre o destino e os detalhes de ordem de compilação, consulte Ordem de compilação de destino.

O processamento em lotes de destino

Um elemento de destino pode ter um Outputs atributo que especifica os metadados no formulário % (metadados). Nesse caso, o MSBuild é executado o destino de uma vez para cada valor de metadados exclusivo, agrupamento ou "lote" os itens que possuem esse valor de metadados. Por exemplo,

<ItemGroup>

<Reference Include="System.Core">

<RequiredTargetFramework>3.5</RequiredTargetFramework>

</Reference>

<Reference Include="System.Xml.Linq">

<RequiredTargetFramework>3.5</RequiredTargetFramework>

</Reference>

<Reference Include="Microsoft.CSharp">

<RequiredTargetFramework>4.0</RequiredTargetFramework>

</Reference>

</ItemGroup>

<Target Name="AfterBuild"

Outputs="%(Reference.RequiredTargetFramework)">

<Message Text="Reference:

@(Reference->'%(RequiredTargetFramework)')" />

</Target>

lotes de itens de referência por seus metadados de RequiredTargetFramework. A saída de destino tem esta aparência:

Reference: 3.5;3.5

Reference: 4.0

O processamento em lotes de destino raramente é usado em compilações reais. O processamento em lotes de tarefa é mais comum. Para obter mais informações, consulte Processamento em lotes do MSBuild.

As compilações incrementais

As compilações incrementais são compilações são otimizadas para que os destinos com arquivos de saída estão atualizados com relação aos seus arquivos de entrada correspondentes não são executados. Um elemento de destino pode ter ambos Inputs e Outputs atributos, indicando quais itens de espera de destino como entrada, e os itens que produz como saída.

Se todos os itens de saída estão atualizados, o MSBuild ignora o destino, o que melhora significativamente a velocidade de compilação. Isso é chamado de uma compilação incremental do destino. Se apenas alguns arquivos estão atualizados, o MSBuild executa o destino sem os itens atualizados. Isso é chamado de uma compilação incremental parcial do destino. Para obter mais informações, consulte As compilações incrementais.

Consulte também

Tarefas

How to: Use o mesmo destino em vários arquivos de projeto

Outros recursos

MSBuild Concepts