Partilhar via


Tarefa do MSBuild

Cria MSBuild projetos de outro MSBuild project.

Parâmetros

A tabela a seguir descreve os parâmetros da MSBuild de tarefas.

Parâmetro

Descrição

BuildInParallel

Opcional Boolean parâmetro.

Se true, os projetos especificados no Projects parâmetro são criados em paralelo, se for possível. O padrão é true.

Projects

Obrigatório ITaskItem[] parâmetro.

Especifica os arquivos de projeto para criar.

Properties

Opcional String parâmetro.

Uma lista de pares nome/valor de propriedade para aplicar como propriedades globais para o projeto filho delimitados por ponto-e-vírgula. Quando você especificar este parâmetro, é funcionalmente equivalente à definição de propriedades que possuem o /property Alternar quando você cria com MSBuild. exe. Por exemplo:

Properties="Configuration=Debug;Optimize=$(Optimize)"

Quando você passar propriedades para o projeto por meio de Properties parâmetro, MSBuild cria uma nova instância do projeto, mesmo se o arquivo de projeto já foi carregado. Quando uma nova instância do projeto foi criada, MSBuild trata como um projeto diferente, que tem propriedades globais diferentes e que podem ser criadas em paralelo com outras instâncias do projeto. Por exemplo, uma configuração Release poderia criar ao mesmo tempo como uma configuração de depuração.

RebaseOutputs

Opcional Boolean parâmetro.

Se true, os caminhos relativos de itens de saída de destino dos projetos internos têm seus caminhos ajustados para serem relativas ao projeto de chamada. O padrão é false.

RemoveProperties

Opcional String parâmetro.

Especifica o conjunto de propriedades globais para remover.

RunEachTargetSeparately

Opcional Boolean parâmetro.

Se true, o MSBuild tarefa invoca cada destino na lista passado para MSBuild uma vez, em vez de ao mesmo tempo. Definir esse parâmetro para true garante que os destinos subseqüentes são chamados mesmo se anteriormente chamados destinos falha. Caso contrário, um erro de compilação seria parar invocação de todos os destinos subseqüentes. O padrão é false.

SkipNonexistentProjects

Opcional Boolean parâmetro.

Se true, os arquivos de projeto que não existem no disco serão ignorados. Caso contrário, tais projetos causará um erro.

StopOnFirstFailure

Opcional Boolean parâmetro.

Se true, força a tarefa para parar a construção de projetos restantes assim que pode ser qualquer um deles funciona.

TargetAndPropertyListSeparators

Opcional String[] parâmetro.

Especifica uma lista de destino e a propriedade (incluindo AdditionalProperties como Project os metadados de item). Separadores será un-escaped antes do processamento. Por exemplo % 3B (um escape ';') será tratado como se fosse um un-escaped ';'.

TargetOutputs

Opcional ITaskItem[] parâmetro de saída de somente leitura.

Retorna as saídas dos destinos internos de todos os arquivos de projeto. Somente as saídas de destinos especificados são retornados, não as saídas que podem existir em destinos que dependem desses destinos.

O TargetOutputs parâmetro também contém os seguintes metadados:

  • MSBuildProjectFile: O MSBuild o arquivo de projeto que contém o destino que defina as saídas.

  • MSBuildTargetName: O destino que definem as saídas.

Observação

Se você quiser identificar as saídas de cada arquivo de projeto ou separadamente de destino, execute o MSBuild tarefa separadamente para cada arquivo de projeto ou de destino.Se você executar o MSBuild tarefa somente uma vez para criar todos os arquivos do projeto, as saídas de todos os destinos são coletados em uma matriz.

Targets

Opcional String parâmetro.

Especifica o destino ou destinos de compilação em arquivos de projeto. Use um ponto e vírgula para separar uma lista de nomes de destino. Se nenhum destino forem especificado no MSBuild tarefa, os destinos do padrão especificados nos arquivos do projeto são construídos.

Observação

Os destinos devem ocorrer em todos os arquivos de projeto.Se não, ocorre um erro de compilação.

ToolsVersion

Opcional String parâmetro.

Especifica o ToolsVersion a ser usado ao construir projetos passado para esta tarefa.

Permite que um MSBuild a tarefa para construir um projeto que se destina a uma versão diferente da .NET Framework daquele especificado no projeto. Os valores válidos são 2.0, 3.0 e 3.5. Valor padrão é 3.5.

UnloadProjectsOnCompletion

Opcional Boolean parâmetro.

Se true, o projeto será descarregado quando a operação for concluída.

UseResultsCache

Opcional Boolean parâmetro.

Se true, o resultado em cache será retornado, se presente. Se a tarefa de theMSBuild é executada, seu resultado será ser armazenada em cache em um escopo (ProjectFileName, GlobalProperties) [TargetNames]

como uma lista de itens de compilação

Comentários

Além de para os parâmetros listados acima, esta tarefa herda os parâmetros da TaskExtension , a própria classe herda o Task classe. Para obter uma lista desses parâmetros adicionais e suas descrições, consulte Classe Base de TaskExtension.

Ao contrário de usar o Tarefa Exec para iniciar o MSBuild. exe, essa tarefa usa o mesmo MSBuild processo de criação de projetos do filho. A lista de destinos já desenvolvido que pode ser ignorada é compartilhada entre as compilações de pai e filho. Essa tarefa também é mais rápido porque não nova MSBuild processo é criado.

Esta tarefa pode processar não somente os arquivos de projeto, mas também os arquivos de solução.

Qualquer configuração necessária para MSBuild Ativar projetos criar ao mesmo tempo, mesmo se a configuração envolve remota infra-estrutura (por exemplo, portas, protocolos, tempos limite, tentativas e assim por diante), deve ser configurável usando um arquivo de configuração. Quando possível, os itens de configuração devem ser capazes de ser especificado como parâmetros da tarefa na MSBuild de tarefas.

A partir de MSBuild 3,5, solução projetos agora superfície TargetOutputs de todos os subprojetos ele compilações.

Propriedades de passagem para projetos

Nas versões do MSBuild antes MSBuild 3.5, passando a diferentes conjuntos de propriedades para diferentes projetos listados na MSBuild item era desafiador. Se você tiver usado o atributo de propriedades da Tarefa do MSBuild, e em seguida, sua configuração foi aplicada a todos os projetos que está sendo criados, a menos que você em lote a Tarefa do MSBuild e condicionalmente fornecido propriedades diferentes para cada projeto na lista de item.

MSBuild3,5, no entanto, oferece dois novos reservados itens de metadados, propriedades e AdditionalProperties, que fornecem uma maneira flexível passar propriedades diferentes diferentes projetos sendo construído usando a Tarefa do MSBuild.

Observação

Esses novos itens de metadados são aplicáveis somente aos itens passados no atributo de projetos da Tarefa do MSBuild.

Benefícios de compilação de multiprocessadores

Um dos principais benefícios de usar este novo metadados ocorre quando você cria seus projetos em paralelo em um sistema de multiprocessador. Os metadados permitem consolidar todos os projetos em um único Tarefa do MSBuild chamada sem executar qualquer processamento em lotes ou condicional MSBuild tarefas. E quando você chama um único Tarefa do MSBuild, todos os projetos listados no atributo projetos serão compilados em paralelo. (Somente, entretanto, se a BuildInParallel=true atributo está presente na Tarefa do MSBuild.) Para obter mais informações, consulte Criação de vários processadores.

Metadados de propriedades

Um cenário comum é quando você está criando vários arquivos de solução usando o Tarefa do MSBuild, apenas usando diferentes criar configurações. Talvez você queira criar solução a1 usando o a2 de configuração e solução de depuração usando a configuração de lançamento. Em MSBuild 2.0, o arquivo de projeto seria a seguinte aparência:

Observação

No exemplo a seguir, "…" representa os arquivos adicionais de solução.

a.proj

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="Build">
        <MSBuild Projects="a1.sln..." Properties="Configuration=Debug"/>
        <MSBuild Projects="a2.sln" Properties="Configuration=Release"/>
    </Target>
</Project>

Usando os metadados de propriedades, no entanto, você pode simplificar essa opção para usar um único Tarefa do MSBuild, conforme mostrado pelo seguinte:

a.proj

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <ProjectToBuild Include="a1.sln…">
            <Properties>Configuration=Debug</Properties>
        </ProjectToBuild>
        <ProjectToBuild Include="a2.sln">
            <Properties>Configuration=Release</Properties>
        </ProjectToBuild>
    </ItemGroup>
    <Target Name="Build">
        <MSBuild Projects="@(ProjectToBuild)"/>
    </Target>
</Project>

- ou -

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <ProjectToBuild Include="a1.sln…"/>
        <ProjectToBuild Include="a2.sln">
            <Properties>Configuration=Release</Properties>
        </ProjectToBuild>
    </ItemGroup>
    <Target Name="Build">
        <MSBuild Projects="@(ProjectToBuild)" 
          Properties="Configuration=Debug"/>
    </Target>
</Project>

Metadados de AdditionalProperties

Considere o seguinte cenário onde você está criando dois arquivos de solução usando o Tarefa do MSBuild, ambos, usando a configuração de versão, mas um usando a arquitetura x86 e o outro usando a arquitetura ia64. Em MSBuild 2.0, você precisaria criar várias instâncias da Tarefa do MSBuild: um para compilar o projeto usando a configuração de liberação com x86 arquitetura, o outro usando a configuração de lançamento com a arquitetura ia64. Seu arquivo de projeto seria semelhante ao seguinte:

a.proj

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="Build">
        <MSBuild Projects="a1.sln…" Properties="Configuration=Release; 
          Architecture=x86"/>
        <MSBuild Projects="a2.sln" Properties="Configuration=Release; 
          Architecture=ia64"/>
    </Target>
</Project>

Usando os metadados de AdditionalProperties, você pode simplificar essa opção para usar um único Tarefa do MSBuild usando o seguinte:

a.proj

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <ProjectToBuild Include="a1.sln…">
            <AdditionalProperties>Architecture=x86
              </AdditionalProperties>
        </ProjectToBuild>
        <ProjectToBuild Include="a2.sln">
            <AdditionalProperties>Architecture=ia64
              </AdditionalProperties>
        </ProjectToBuild>
    </ItemGroup>
    <Target Name="Build">
        <MSBuild Projects="@(ProjectToBuild)" 
          Properties="Configuration=Release"/>
    </Target>
</Project>

Exemplo

O exemplo a seguir usa a MSBuild tarefas para criar os projetos especificados pela ProjectReferences item coleção. As saídas de destino resultante são armazenadas na AssembliesBuiltByChildProjects item coleção.

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">

    <ItemGroup>
        <ProjectReferences Include="*.*proj" />
    </ItemGroup>

    <Target Name="BuildOtherProjects">
        <MSBuild
            Projects="@(ProjectReferences)"
            Targets="Build">
            <Output
                TaskParameter="TargetOutputs"
                ItemName="AssembliesBuiltByChildProjects" />
        </MSBuild>
    </Target>

</Project>

Consulte também

Conceitos

Tarefas do MSBuild

Outros recursos

Referência de tarefa do MSBuild

Histórico de alterações

Date

History

Motivo

Junho de 2010

Altere o valor padrão de BuildInParallel para true.

Correção de bug de conteúdo.