Destinos do MSBuild

Destinos agrupar tarefas em uma determinada ordem e permitem seções do processo de compilação a ser chamado a partir da linha de comando.Destinos geralmente são agrupados em seções lógicas para permitir a expansão do arquivo de projeto e aumentar a legibilidade.Por exemplo, um destino talvez exclua 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 as coloca no diretório vazio.

Declarando Targets no arquivo de projeto

Destinos são declarados no arquivo de projeto com o Target elemento. Por exemplo, o XML a seguir cria um destino chamado Compile, quais chamadas, em seguida, o Csc tarefas com o Compile coleção de itens.

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

Destinos também podem usar o Condition atributo. Se a condição especificada for avaliada como false, o destino não será executado e o MSBuild mecanismo não serão executados os destinos especificados no DependsOnTargets atributo. Para obter mais informações sobre as condições, consulte Condições do MSBuild.

Análise de dependência

Em cenários mais avançados destinos podem descrever as relações entre cada Outros e realizar análises de dependência, que permite que todo seções do processo de compilação a ser ignorado se o destino está atualizado.Você pode declarar os destinos devem executar antes de um destino específico usando o DependsOnTargets atributo. Quando um destino é executado, o MSBuild mecanismo executará automaticamente qualquer destino listado nesse atributo primeiro. Para obter mais informações, consulte Como: Criar incrementalmente.

Observação:

Um destino nunca será executado duas vezes durante uma compilação única.Depois de executar, um destino é considerado concluiu seu trabalho e não serão ser executado novamente, mesmo se um destino na compilação subseqüente depende.

Práticas recomendadas

Dividindo o arquivo de projeto dessa forma permite seções do arquivo a ser alterada sem afetar outros.Por exemplo, é uma maneira de criar um projeto com recursos colocar o GenerateResource e Csc tarefas no mesmo destino, por exemplo:

<Target Name="Build">
    <GenerateResource
        Sources="alpha.resx; beta.txt"
        <Output
            TaskParameter="OutputResources"
            ItemName="Resources"/>
    </GenerateResource>
    <Csc
        Sources="hello.cs"
        Resources="@(Resources)"
        OutputAssembly="hello.exe"/>
</Target>

Usando essa abordagem, o projeto cria conforme necessário, mas o destino está se tornando inflexível e grande.Se você quiser adicionar mais tarde Outros tarefas para executar entre GenerateResource e Csc, colocá-los em um destino tornariam o projeto muito difícil de ler do arquivo. Além disso, esses destinos grandes com tantas tarefas de criação torna difícil executar compilações incrementais mercadoria — se baseia na qual são reconstruídos apenas esses destinos que não foram criados antes ou destinos que estão desatualizados.Destinos grandes também impedir a execução destinos para executar tarefas específicas.No exemplo acima, não é possível gerar recursos sem compilar.

Uma maneira melhor de criação de um arquivo de projeto é usar vários destinos e expressar explicitamente dependências entre elas.Essa abordagem também permite que você executar qualquer um dos destinos separadamente e executar um conjunto menor de tarefas em vez de executando uma longa lista de tarefas em um destino sempre que você compilação.Neste exemplo, cada tarefa está em um destino separado e o DependsOnTargets atributo especifica que o Resources destino deve executar antes o Build destino pode ser executado.

<Target Name="Resources">
    <GenerateResource
        Sources="alpha.resx; beta.txt"
        <Output
            TaskParameter="OutputResources"
            ItemName="Resources"/>
    </GenerateResource>
</Target>

<Target Name="Build" DependsOnTargets="Resources">
    <Csc
        Sources="hello.cs"
        Resources="@(Resources)"
        OutputAssembly="hello.exe"/>
</Target>

Consulte também

Tarefas

Como: Especifique quais destino para compilação primeiro

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

Conceitos

Visão geral do MSBuild

Outros recursos

Conceitos do MSBuild