Condividi tramite


Compilazione di più progetti in parallelo con MSBuild

È possibile utilizzare MSBuild per compilare più progetti più velocemente possibile eseguirli in parallelo.Per eseguire compilazioni in parallelo, le impostazioni seguenti in un computer multicore o più di un processore:

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

  • Il parametro di attività di BuildInParallel su un attività MSBuild.

[!NOTA]

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

Opzione di /maxcpucount

Se si utilizza l'opzione di /maxcpucount, o /m in breve, MSBuild può creare il numero specificato di 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, impostare questa opzione su un valore di "4 " determina MSBuild a creare quattro processi di lavoro per compilare il progetto.

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

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

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

C:\WINDOWS\Microsoft.NET\Framework\v3.5>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 parallelismo di compilazione di ottimizzazione C++