Tarefa MSBuild
Projetos de MSBuild a partir de outro projeto de MSBuild .
Parâmetros
A tabela a seguir descreve os parâmetros de tarefa de MSBuild .
Parâmetro |
Descrição |
---|---|
BuildInParallel |
Parâmetro opcional de Boolean . Se true, os projetos especificado no parâmetro de Projects é compilado paralelamente se for possível. O padrão é false. |
Projects |
Parâmetro necessário ITaskItemde[] . Especifica os arquivos de projeto para compilar. |
Properties |
Parâmetro opcional de String . Uma lista delimitada por ponto-e-vírgula de propriedade de nome/valor (coleção headers) exibe como propriedades globais para aplicar ao projeto filho. Quando você especificar este parâmetro, é funcional equivalente a definir as propriedades que têm a opção de /property quando você compila com MSBuild.exe. Por exemplo: Properties="Configuration=Debug;Optimize=$(Optimize)" Quando você passa propriedades para o projeto com o parâmetro de Properties , MSBuild cria uma nova instância de projeto se o arquivo de projeto já foi carregado. Quando uma nova instância do projeto foi criada, MSBuild tratá-lo como um projeto diferente que tem propriedades globais diferentes e que pode ser compilado paralelamente a outras instâncias do projeto. Por exemplo, a configuração de versão pode compilar ao mesmo tempo que uma configuração de depuração. |
RebaseOutputs |
Parâmetro opcional de Boolean . Se true, os caminhos relativos de itens de saída de destino dos projetos criados tem seus caminhos definidos para ser relativo ao projeto de chamada. O padrão é false. |
RemoveProperties |
Parâmetro opcional de String . Especifica o conjunto de propriedades globais para remover. |
RunEachTargetSeparately |
Parâmetro opcional de Boolean . Se true, a tarefa de MSBuild chama cada destino na lista passada para MSBuild um de cada vez, em vez da o mesmo tempo. Defina o parâmetro como true garante que os destinos subsequentes são chamados mesmo se os destinos anteriormente chamados falharam. Caso contrário, um erro de compilação pararia invocação de todos os destinos subsequentes. O padrão é false. |
SkipNonexistentProjects |
Parâmetro opcional de Boolean . Se true, arquivos de projeto que não existem no disco. será tiver ignorado Caso contrário, esses projetos causarão um erro. |
StopOnFirstFailure |
Parâmetro opcional de Boolean . Se true, quando um dos projetos não mais projetos compilar, não será compilado. Isso não é suportado atualmente ao criar paralelamente (com vários processadores). |
TargetAndPropertyListSeparators |
Parâmetro opcional de String[] . Especifica uma lista de destinos e como metadados de propriedades de item de Project ). Separadores un- serão escapados antes de processamento. por.. exemplo %3B escape (“; ") será tratado como se fosse un- escapado “; ”. |
TargetOutputs |
Parâmetro de saída somente leitura opcional de ITaskItem[] . Retorna a saída destinos criados de todos os arquivos de projeto. Somente a saída destinos que foram especificados são retornadas, não nenhuma saída que podem existir nos destinos que dependem desses destinos. O parâmetro de TargetOutputs também contém os metadados seguintes:
Dica Se você desejar identificar separada a saída de cada arquivo ou projeto de destino, executar a tarefa de MSBuild separadamente para cada arquivo ou projeto de destino.Se você executar a tarefa de MSBuild apenas uma vez compilar todos os arquivos de projeto, a saída de todos os destinos são coletadas em uma matriz. |
Targets |
Parâmetro opcional de String . Especifica o destino ou destinos para compilar em arquivos de projeto. Use um ponto-e-vírgula para separar uma lista de nomes de destino. Se nenhum destino é especificado na tarefa de MSBuild , destinos padrão especificado nos arquivos de projeto são compilados. Dica Destinos devem ocorrer em todos os arquivos de projeto.Se não, um erro de compilação ocorre. |
ToolsVersion |
Parâmetro opcional de String . Especifica ToolsVersion para usar quando os projetos imobiliários passados para esta tarefa. Permite uma tarefa de MSBuild compilar um projeto que tem como alvo uma versão diferente de .NET Framework de aquele especificado no projeto. Os valores válidos são 2.0, 3.0 e 3.5. O valor padrão é 3.5. |
UnloadProjectsOnCompletion |
Parâmetro opcional de Boolean . Se true, o projeto será descarregado uma vez que a operação é concluída. |
UseResultsCache |
Parâmetro opcional de Boolean . Se true, o resultado em cache será retornado, se presente. Se a tarefa de theMSBuild é executada, o resultado será armazenado em cache em um escopo (ProjectFileName, GlobalProperties) [TargetNames] como uma lista de itens de compilação |
Comentários
Além dos parâmetros listados acima, esta tarefa parâmetros herda da classe de TaskExtension própria, que herda da classe de Task . Para obter uma lista desses parâmetros adicionais e suas descrições, consulte Classe TaskExtension (base).
Ao contrário usando Tarefa Exec para iniciar MSBuild.exe, esta tarefa usa o mesmo processo de MSBuild para compilar os projetos filhos. A lista de destino já compilados que podem ser ignorados é compartilhado entre as compilações o pai e filho. Esta tarefa também é mais rápido porque nenhum novo processo de MSBuild é criado.
Esta tarefa pode processar não apenas arquivos de projeto mas também arquivos de solução.
Qualquer configuração que é necessária por MSBuild para ativar projetos compilar ao mesmo tempo, mesmo se a configuração envolve a infraestrutura remoto (por exemplo, portas, protocolos, tempo limite, o tenta, e assim por diante), deve ser feita usando configurável um arquivo de configuração. Quando possível, os itens de configuração possam ser especificado como parâmetros de tarefa na tarefa de MSBuild .
Iniciando em MSBuild 3,5, projetos agora TargetOutputs de superfície de solução de subpropriedades e todos os projetos que compila.
Passando propriedades para projetos
Nas versões de MSBuild antes de MSBuild 3,5, passe diferentes conjuntos de propriedades para projetos diferentes listados no item de MSBuild foi desafiador. Se você usou o atributo das propriedades do Tarefa MSBuild, então sua configuração foi aplicado a todos os projetos que estão sendo compilados a menos que você processasse em lotes Tarefa MSBuild e fornecesse condicional propriedades diferentes para cada projeto na lista de item.
MSBuild 3,5, no entanto, fornece dois novos itens, propriedades e AdditionalProperties reservados de metadados, que lhe fornece uma maneira flexível de passar diferentes propriedades para projetos diferentes que estão sendo criados usando Tarefa MSBuild.
Dica
Esses novos itens de metadados são aplicáveis somente para itens passados no atributo de projetos Tarefa MSBuild.
Benefícios de compilação multiprocessadores
Um dos benefícios-chave de usar esses novos metadados ocorre quando você cria seus projetos paralelamente em um sistema de processadores. Os metadados permitem que você consolide todos os projetos em uma única chamada do Tarefa MSBuild sem precisar executar qualquer em lotes ou tarefas condicionais de MSBuild . E quando você chamar somente único Tarefa MSBuild, todos os projetos listaram nos projetos que o atributo será criado paralelamente. (Somente, no entanto, se o atributo de BuildInParallel=true está presente em Tarefa MSBuild.) Para obter mais informações, consulte Criando vários projetos paralelamente com o MSBuild.
Metadados de propriedades
Um cenário comum é quando você está criando múltiplos arquivos de solução usando Tarefa MSBuild, simplesmente usando diferentes configurações de compilação. Você pode querer criar a solução a1 usando a configuração de depuração e a solução a2 usando a configuração de versão. Em MSBuild 2,0, esse arquivo de projeto seria semelhante ao seguinte:
Dica
No exemplo, “…” representa 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 usar para simplificar este único Tarefa MSBuild, como 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 Tarefa MSBuild, tanto usando a configuração de versão, mas um usando a arquitetura x e outra que usa a arquitetura ia64. Em MSBuild 2,0, você precisará criar várias instâncias do Tarefa MSBuild: um para criar o projeto usando a configuração de versão com a arquitetura x, o outro usando a configuração de versão com a arquitetura ia64. O 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 usar para simplificar este único Tarefa 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 tarefa de MSBuild compilar os projetos especificados pela coleção de item de ProjectReferences . A saída resultante de destino são armazenadas na coleção de item de AssembliesBuiltByChildProjects .
<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>