Génération parallèle de plusieurs projets avec MSBuild

Utilisez MSBuild pour générer plusieurs projets plus rapidement en les exécutant en parallèle. Pour exécuter des générations en parallèle, vous utilisez les paramètres suivants sur un ordinateur multicœur ou à plusieurs processeurs :

  • La bascule /maxcpucount à une invite de commandes.

  • Le paramètre de tâche BuildInParallel sur une tâche MSBuild.

Notes

La bascule /verbosity (/v) dans une ligne de commande peut également affecter les performances de génération.Votre performance de génération peut diminuer si les commentaires de vos informations de journal de génération sont définies comme détaillées ou diagnostic, utilisés pour la résolution.Pour plus d’informations, consultez Obtention de journaux de génération avec MSBuild et Référence de la ligne de commande MSBuild.

Commutateur /maxcpucount

Si vous utilisez le commutateur /maxcpucount, ou /m en abrégé, MSBuild peut créer le nombre spécifié de processus MSBuild.exe qui peuvent être exécutés en parallèle. Ces processus sont également appelés « processus de travail. » Chaque processus de travail utilise un processeur distinct si disponible pour générer un projet pendant que d'autres processeurs disponibles génèrent d'autres projets. Par exemple, la valeur « 4 » attribuée au switch demande à MSBuild de créer quatre processus de travail pour générer le projet.

Si vous incluez le commutateur /maxcpucount sans spécifier de valeur, MSBuild utilisera jusqu'au nombre de processeurs de l'ordinateur.

Pour plus d'informations sur ce commutateur, introduit dans MSBuild 3,5, consultez Référence de la ligne de commande MSBuild.

L'exemple suivant indique à MSBuild d'utiliser trois processus de travail. Si vous utilisez cette configuration, MSBuild peut générer trois projets.

msbuild.exe myproj.proj /maxcpucount:3

Paramètre de tâche BuildInParallel

BuildInParallel est un paramètre booléen facultatif dans une tâche MSBuild. Lorsque BuildInParallel a la valeur true (sa valeur par défaut), plusieurs processus de travail sont générés pour créer simultanément autant de projets que possible. Pour lui permettre de fonctionner correctement, le commutateur /maxcpucount doit avoir une valeur supérieure à 1 et le système doit être de type dual-core ou avoir au moins deux processeurs.

Les éléments suivants sont un exemple tiré de microsoft.common.targets pour la définition du paramètre 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>

Voir aussi

Concepts

Utilisation de plusieurs processeurs pour générer des projets

Écriture de journaux prenant en charge plusieurs processeurs

Autres ressources

Blog de parallélisme de génération du paramétrage C++