Criação de diversos projetos em paralelo
MSBuild 3.5 inclui duas maneiras de otimizar o desempenho de compilação no Multi-Core ou vários sistemas de processador, sistema autônomo segue:
Usando o /maxcpucount comutador na linha de comando.
Usando o BuildInParallel parâmetro de tarefas do MSBuild tarefa.
/ comutador Maxcpucount
The /maxcpucount comutador, ou /m para abreviar, permite MSBuild3.5 para criar o número especificado de MSBuild.exe processos que podem ser executados em paralelo. Esses processos também são conhecidos sistema autônomo "processos de trabalho". Cada processo do operador usa um núcleo separado ou processador, se houver alguma disponível para compilação um projeto ao mesmo time sistema autônomo outros processadores disponível pode ser compilação ing outros projetos.Por exemplo, se você definir /maxcpucountcom o valor de "4" causas MSBuild Para criar quatro processos do operador compilação o projeto.
A seguir é um exemplo de usando o /maxcpucount Alterne na linha de comando.
C:\WINDOWS\Microsoft.NET\Framework\v3.5>msbuild.exe myproj.proj /maxcpucount:3
Este exemplo instrui o MSBuild para compilação usando três processos do operador. Usando essa configuração, três projetos podem ser criadas ao mesmo time.Para garantir o desempenho ideal de compilação, conjunto o valor de /maxcpucount para que o número de processadores ou núcleos no sistema.
Parâmetro BuildInParallel tarefas
BuildInParallel é um parâmetro booliano opcional em um MSBuild tarefa. Quando BuildInParallel é conjunto para true (o valor padrão), vários processos de trabalho são gerados para construir tantos projetos ao mesmo time possível. Para que isso funcione corretamente, a /maxcpucount comutador deve ser definida para um valor maior que 1 e o sistema deve ser pelo menos dual-core ou ter dois ou mais processadores.
A seguir há um exemplo, extraído microsoft.common.targets sobre como conjunto 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>