Tarefa do MSBuild
Baseia-seMSBuild projetos de outro MSBuild projeto.
Parâmetros
A tabela a seguir descreve os parâmetros do MSBuild tarefa.
Parâmetro |
Descrição |
---|---|
BuildInParallel |
Opcional Boolean parâmetro. If true, os projetos especificados no Projects parâmetro são criados em paralelo se for possível. O padrão é true. |
Projects |
Necessário ITaskItem[] parâmetro. Especifica os arquivos de projeto para compilação. |
Properties |
Opcional String parâmetro. Uma lista delimitada por ponto-e-vírgula de pares nome/valor de propriedade para aplicar sistema autônomo propriedades global para o projeto filho. Quando você especifica esse parâmetro, ele equivale funcionalmente à definição de propriedades que possuem o /property comutador quando você cria com MSBuild.exe. Por exemplo: Properties="Configuration=Debug;Optimize=$(Optimize)" Quando você passar propriedades para o projeto por meio do Properties parâmetro, MSBuild cria uma nova instância do projeto mesmo que o arquivo de projeto já foi carregado. Quando uma nova instância do projeto tiver sido criado, MSBuild Trata-se sistema autônomo um projeto diferente que tenha propriedades global diferentes e que podem ser criadas em paralelo com outras instâncias do projeto. Por exemplo, uma configuração de versão pode compilação ao mesmo time sistema autônomo uma configuração de depurar. |
ToolsVersion |
Opcional String parâmetro. Permite que um MSBuild a tarefa para compilação um projeto que tem uma versão diferente da .NET Framework que a especificada no projeto. Os valores válido são 2.0, 3.0 e 3.5. Valor padrão é 3.5. |
RebaseOutputs |
Opcional Boolean parâmetro. If true, os caminhos relativos do destino de saída itens nos projetos internos têm seus caminhos ajustados para ser relative to projeto chamado. O padrão é false. |
RunEachTargetSeparately |
Opcional Boolean parâmetro. If true, o MSBuild tarefa chama cada destino na lista passado para MSBuild uma vez, em vez de ao mesmo time. Definir esse parâmetro para true garante que os destinos subseqüentes são chamados, mesmo que falhou anteriormente chamados de destinos. Caso contrário, um erro de compilação parava invocação de todos os destinos subseqüentes. O padrão é false. |
StopOnFirstFailure |
Opcional Boolean parâmetro. If true, força a tarefa para parar a construção remanescentes projetos assim que qualquer um deles pode não funcionar. |
TargetOutputs |
Opcional ITaskItem[] parâmetro de saída somente leitura. Retorna as saídas dos destinos internos de todos os arquivos de projeto. Somente as saídas dos destinos especificados são retornados, não saídas que podem existir no público-alvo que esses destinos dependem. The TargetOutputs parâmetro também contém os seguintes metadados:
Observação:
Se você deseja 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 compilação todo o projeto de arquivos, as saídas de todos os alvos são coletados em um array.
|
Targets |
Opcional String parâmetro. Especifica o destino ou destinos para compilação nos arquivos de projeto. Use um ponto-e-vírgula para separar uma lista de nomes de destino. Se nenhum destino for especificado no MSBuild tarefa, o público-alvo padrão especificado nos arquivos de projeto é criado.
Observação:
O público-alvo deve ocorrem em todos os arquivos de projeto.Caso contrário, ocorrerá um erro de compilação.
|
Comentários
Ao contrário de usar o Tarefa de EXEC Para iniciar MScompilação.exe, essa tarefa usa o mesmo MSBuild para compilação projetos filho. A lista de destinos já existentes que podem ser ignoradas é compartilhada entre as compilações pai e filho. Essa tarefa também é mais rápida porque nenhum novo MSBuild processo é criado.
Esta tarefa pode processar não somente arquivos de projeto, mas também arquivos de solução.
Qualquer configuração necessária para MSBuild Para ativar projetos para compilação ao mesmo time, mesmo se a configuração envolve a infra-estrutura remota (por exemplo, portas, protocolos, times limite, repetições e assim por diante), devem ser feitas configurável usando um arquivo de configuração. Quando possível, itens de configuração devem poder ser especificado sistema autônomo parâmetros da tarefa a MSBuild tarefa.
A partir de MSBuild 3,5, Projetos de solução agora superfície TargetOutputs de todos os subprojetos cria.
Propriedades de passagem para projetos
Nas versões de MSBuild antes de MSBuild 3,5, passando diferentes conjuntos de propriedades para diferentes projetos listados na MSBuild item era um desafio. Se você usou o atributo Properties do 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 fornecidas propriedades diferentes para cada projeto na lista de itens.
MSBuild 3.5, no entanto, oferece dois novos reservados itens de metadados, propriedades e AdditionalProperties, que fornecem uma maneira flexível para passar a propriedades diferentes diferentes projetos sejam criados usando o Tarefa do MSBuild.
Observação: |
---|
Esses novos itens de metadados só são aplicáveis aos itens o atributo de projetos do passado a Tarefa do MSBuild. |
Multi-processador compilação benefícios
Um dos maiores benefícios do usando esses metadados novo ocorre quando você compilação seus projetos em paralelo em um sistema com vários processadores. Os metadados permite consolidar todos os projetos em um único Tarefa do MSBuild telefonar sem a necessidade de executar qualquer envio em lote ou condicional MSBuild tarefas. E quando você chama apenas um Tarefa do MSBuild, todos os projetos listados no atributo projetos serão compilados em paralelo. (Apenas, entretanto, se o BuildInParallel=true atributo está presente no Tarefa do MSBuild.) Para obter mais informações, consulte Criando para múltiplos processadores.
Propriedades de metadados
Um cenário comum é quando você estiver criando vários arquivos de solução usando o Tarefa do MSBuild, usando apenas configurações de compilação diferentes. Talvez você queira criar solução a1 usando o a2 depurar a configuração e a solução usando a configuração de versão. In MSBuild 2.0, esse arquivo de projeto seria a seguinte aparência:
Observação: |
---|
No exemplo a seguir, "…" representa os arquivos de solução adicional. |
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 sistema autônomo metadados de propriedades, no entanto, você pode simplificar esta 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 AdditionalProperties
Considere o seguinte cenário no qual você está criando dois arquivos de solução usando o Tarefa do MSBuild, tanto usando a configuração de versão, mas um usando a arquitetura x86 e o Outros usando a arquitetura ia64. In MSBuild 2.0, você precisa para criar várias instâncias das Tarefa do MSBuild: um para construir o projeto usando a configuração de versão com o x86 arquitetura, o Outros usando a configuração de versão com a arquitetura ia64. O arquivo de projeto aparência a seguir:
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 metadados AdditionalProperties, você pode simplificar esta 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 utiliza o MSBuild tarefa para construir projetos especificados pela ProjectReferences coleção de itens. As saídas de destino resultantes são armazenadas na AssembliesBuiltByChildProjects coleção de itens.
<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>