Share via


Compilazione di più progetti in parallelo con MSBuild

È possibile utilizzare MSBuild per compilare più progetti più velocemente possibile eseguendoli in parallelo. Per eseguire compilazioni in parallelo, si utilizzano le impostazioni seguenti in un computer multi-core o multi processore:

  • L'opzione /maxcpucount a un prompt dei comandi.

  • Il parametro di BuildInParallel su un attività MSBuild.

Nota

L'opzione /verbosity (/v) in una riga di comando può incidere sulle prestazioni di compilazione.Le prestazioni di compilazione potrebbero diminuire se il dettaglio delle informazioni del log di compilazione (verbosity) è impostato su dettagliati o diagnostica, utilizzati per risolvere gli errori.Per ulteriori informazioni, vedere Recupero di log di compilazione con MSBuild e Riferimenti alla riga di comando di MSBuild.

Opzione /maxcpucount

Se si utilizza l'opzione /maxcpucount, o l'abbreviazione /m, MSBuild può creare il numero specificato dei processi di MSBuild.exe eseguibili in parallelo. Questi processi sono noti anche come "processi di lavoro." Ogni processo di lavoro utilizza un componente principale o un processore separato, se disponibile, per compilare progetti contemporaneamente alla eventuale compilazione da parte di altri processori disponibili. Ad esempio, se si imposta sul valore "4", MSBuild creerà quattro processi di lavoro per compilare il progetto.

Se si include l'opzione /maxcpucount senza specificare un valore, MSBuild utilizzerà fino al numero massimo di processori presenti nel computer.

Per ulteriori informazioni su questa opzione, introdotta in MSBuild 3.5, vedere Riferimenti alla riga di comando di MSBuild.

L'esempio seguente indica a MSBuild di utilizzare tre processi di lavoro. Se si utilizza questa configurazione, MSBuild può compilare tre progetti contemporaneamente.

msbuild.exe myproj.proj /maxcpucount:3

Parametro dell'attività BuildInParallel

BuildInParallel è un parametro booleano facoltativo su un'attività di MSBuild. Quando BuildInParallel è impostato su true (il valore predefinito), vengono generati più processi di lavoro per compilare contemporaneamente il maggior numero possibile di progetti. Affinché funzioni correttamente, l'opzione /maxcpucount deve essere impostata su un valore maggiore di 1 e il sistema deve disporre di almeno due componenti principali o processori.

Gli elementi seguenti costituiscono un esempio, tratto da microsoft.common.targets, sull'impostazione del parametro 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>

Vedere anche

Concetti

Utilizzo di più processori per la compilazione di progetti

Scrittura di logger compatibili con più processori

Altre risorse

Blog di ottimizzazione del parallelismo di compilazione di C++