Partilhar via


A criação de vários projetos em paralelo

MSBuild3.5 inclui duas maneiras de otimizar o desempenho de compilação no Multi-Core ou vários sistemas de processador, da seguinte maneira:

  • Usando o /maxcpucount Alternar na linha de comando.

  • Usando o BuildInParallel parâmetro de tarefa do MSBuild de tarefas.

/ Comutador Maxcpucount

O /maxcpucount Alternar, ou /m para habilita curta, MSBuild 3.5 para criar o número especificado de processos de MSBuild. exe que pode ser executado em paralelo. Esses processos também são conhecidos como "operador processos". Cada processo do operador usa um processador, ou o core separado se houver alguma disponíveis para construir um projeto ao mesmo tempo, como outros processadores disponíveis podem estar criando a outros projetos. Por exemplo, a configuração /maxcpucount para um valor de "4" faz com que MSBuild para criar quatro processos de trabalho para construir o projeto.

A seguir está um exemplo do uso de /maxcpucount Alternar na linha de comando.

C:\WINDOWS\Microsoft.NET\Framework\v3.5>msbuild.exe myproj.proj /maxcpucount:3

Este exemplo instrui o MSBuild para construir usando três processos de trabalho. Usando essa configuração, três projetos podem ser criadas ao mesmo tempo. Para assegurar um desempenho ideal de compilação, defina o valor de /maxcpucount para igualar o número de processadores ou núcleos no sistema.

Parâmetro de tarefa de BuildInParallel

BuildInParallelé um parâmetro booleano opcional em um MSBuild de tarefas. Quando BuildInParallel for definido como true (o valor padrão), vários processos de trabalho são gerados para criar tantos projetos ao mesmo tempo como possível. Para que isso funcione corretamente, o /maxcpucount switch deve ser definido como um valor maior que 1, e o sistema deve ser pelo menos dual-core ou ter dois ou mais processadores.

A seguir está um exemplo, obtido da microsoft.common.targets, sobre como definir o BuildInParallel parâmetro.

<PropertyGroup>
    <BuildInParallel Condition="'$(BuildInParallel)' == 
        ''">true</BuildInParallel>
</PropertyGroup>
<MSBuild
    Projects="@(_MSBuildProjectReferenceExistent)"
    Targets="GetTargetPath"
    BuildInParallel="$(BuildInParallel)"
    Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); 
        %(_MSBuildProjectReferenceExistent.SetPlatform)"
    Condition="'@(NonVCProjectReference)'!='' and 
        ('$(BuildingSolutionFile)' == 'true' or 
        '$(BuildingInsideVisualStudio)' == 'true' or 
        '$(BuildProjectReferences)' != 'true') and   
        '@(_MSBuildProjectReferenceExistent)' != ''"
    ContinueOnError="!$(BuildingProject)">
    <Output TaskParameter="TargetOutputs" 
        ItemName="_ResolvedProjectReferencePaths"/>
</MSBuild>

Consulte também

Conceitos

Usando vários processadores para construir projetos

Gravando vários-Loggers ciente do processador-