Share via


Compilar varios proyectos en paralelo con MSBuild

Puede utilizar MSBuild para compilar varios proyectos más rápidamente ejecutandolos en paralelo.Para ejecutar compilaciones en paralelo, utiliza los valores siguientes en un equipo multiproceso o múltiple de procesador:

  • El modificador /maxcpucount en un símbolo del sistema.

  • El parámetro de tarea BuildInParallel en una tarea de MSBuild.

[!NOTA]

El modificador /verbosity (/v) en una línea de comandos también puede afectar al rendimiento de la compilación.El rendimiento de la compilación puede disminuir si el nivel de detalle de la información del registro de compilación se establece en detallados o de diagnóstico, que se utilizan para solucionar problemas.Para obtener más información, vea Obtener registros de compilación con MSBuild y Referencia de la línea de comandos de MSBuild.

Modificador de /maxcpucount

Si utiliza el modificador /maxcpucount, o /m para short, MSBuild puede crear el número especificado de procesos de MSBuild.exe que se pueden ejecutar en paralelo. Estos procesos también se conocen como “procesos de trabajo”. Cada proceso de trabajo utiliza un núcleo o procesador independiente, si hay alguno disponible, para compilar un proyecto al mismo tiempo ya que los demás procesadores disponibles pueden estar compilando otros proyectos.Por ejemplo, establecer este modificador en un valor de “4 " hace MSBuild para crear cuatro procesos de trabajo para compilar el proyecto.

Si incluye el modificador /maxcpucount sin especificar un valor, MSBuild utilizará hasta el número de procesadores del equipo.

Para obtener más información sobre este cambio, que se introdujo en MSBuild 3,5, vea Referencia de la línea de comandos de MSBuild.

El ejemplo siguiente indica a MSBuild para utilizar tres procesos de trabajo.Si utiliza esta configuración, MSBuild puede compilar tres proyectos al mismo tiempo.

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

Parámetro de tarea BuildInParallel

BuildInParallel es un parámetro booleano opcional de una tarea de MSBuild.Cuando BuildInParallel se establece en true (su valor predeterminado), se generan varios procesos de trabajo para compilar al mismo tiempo el mayor número de proyectos posible.Para que funcione correctamente, el modificador /maxcpucount debe establecerse en un valor mayor que 1 y el sistema debe tener al menos dos núcleos o dos o más procesadores.

A continuación, se muestra un ejemplo tomado de microsoft.common.targets, sobre cómo establecer el parámetro BuildInParallel.

<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>

Vea también

Conceptos

Uso de varios procesadores para compilar proyectos

Escribir registradores que reconocen varios procesadores

Otros recursos

Blog de Paralelismo de la generación de C++ de optimización