Compartir a través de


Compilar varios proyectos en paralelo con MSBuild

Puede usar MSBuild para compilar varios proyectos más rápidamente si los ejecuta en paralelo. Para ejecutar compilaciones en paralelo, use los parámetros siguientes en un equipo con varios procesadores o varios núcleos:

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

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

NotaNota

El modificador /verbosity (/v) en una línea de comandos también puede afectar al rendimiento de la compilación.Es posible que disminuya el rendimiento de la compilación si el nivel de detalle de la información del registro de compilación se establece en "detailed" o "diagnostic", que se usan 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 /maxcpucount

Si utiliza el modificador /maxcpucount, o /m abreviado, MSBuild puede crear el número especificado de procesos de MSBuild.exe que se pueden ejecutar en paralelo. Estos procesos también se denominan "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, si se establece este modificador en un valor "4", MSBuild creará cuatro procesos de trabajo para compilar el proyecto.

Si incluye el modificador /maxcpucount sin especificar un valor, MSBuild podrá usar todos los procesadores de que disponga el equipo.

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

En el ejemplo siguiente se indica a MSBuild que use tres procesos de trabajo. Si utiliza esta configuración, MSBuild puede compilar tres proyectos al mismo tiempo.

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 sobre la optimización del paralelismo de compilación de C++