Share via


Destinos do MSBuild

As tarefas do grupo de destinos juntos em uma ordem específica e permitem que o processo de compilação é acrescentado em unidades menores.Por exemplo, um destino pode excluir todos os arquivos no diretório de saída para preparar para a compilação, enquanto outras entradas para compilar o projeto e as colocado no diretório vazia.Para obter mais informações sobre as tarefas, consulte Tarefas do MSBuild.

Declarando destinos no Arquivo de projeto

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

<Target Name="Construct">
    <Csc Sources="@(Compile)" />
</Target>

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

<Target Name="AfterBuild" >
    <Message Text="First occurrence" />
</Target>
<Target Name="AfterBuild" >
    <Message Text="Second occurrence" />
</Target>

Se AfterBuild executa, exibe somente a segunda ocorrência “”.

Ordem de compilação de destino

Destinos devem ser ordenados se a entrada a um destino depende de saída de outro destino.Há várias maneiras de especificar a ordem em que execução de destino.

  • Destinos de inicial

  • Destinos de opção

  • primeiro destino

  • Dependências de destino

  • BeforeTargets e AfterTargets MSBuild (4,0)

Um destino nunca tem duas vezes em uma única compilação, mesmo se um destino na compilação subseqüente depende de ele.Quando um destino é executado, a contribuição para a compilação for concluída.

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

Direcionar em lotes

Um elemento de destino pode ter um atributo de Outputs que especifica metadados no formulário (%) de metadados.Em esse caso, o MSBuild executa o destino uma vez para cada metadados exclusivos valor, agrupamento ou “em lotes” os itens que precisam 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>

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

Reference: 3.5;3.5
Reference: 4.0

Em lotes de destino é raramente usados em compilações reais.Em lotes de tarefa é mais comuns.Para obter mais informações, consulte Processamento em lotes do MSBuild.

Compilações incrementais

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

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

Consulte também

Tarefas

Como: usar o mesmo destino em vários arquivos de projeto

Outros recursos

Conceitos do MSBuild