Paralelní sestavování více projektů s MSBuild

Nástroj MSBuild lze použít pro rychlejší sestavení více projektů tak, že budou tyto projekty spuštěny paralelně. Pro paralelní spuštění sestavení je možné na počítači s více jádry nebo s více procesory použít následující nastavení:

  • Přepínač příkazového řádku -maxcpucount.

  • Parametr úlohy BuildInParallel na úlohu nástroje MSBuild.

Poznámka

Přepínač -verbosity (-v) v příkazovém řádku může také ovlivnit výkon sestavení. Výkon sestavení se může snížit, je-li podrobnost informací protokolu sestavení nastavena na možnosti podrobné nebo diagnostické, které se používají pro řešení potíží. Další informace najdete v tématu Získání protokolů sestavení a referenční informace k příkazovému řádku.

Přepínač -maxcpucount

Pokud použijete přepínač nebo zkráceně , MSBuild můžete vytvořit zadaný počet procesůMSBuild.exe, které -maxcpucount -m mohou běžet paralelně. Tyto procesy jsou známé také jako „pracovní procesy“. Každý pracovní proces používá samostatné jádro nebo procesor – je-li nějaký k dispozici – pro sestavení projektu ve stejnou dobu, kdy ostatní procesory provádějí sestavení ostatních projektů. Například nastavení tohoto přepínače na hodnotu „4“ způsobí, že nástroj MSBuild vytvoří čtyři pracovní procesy pro sestavení projektu.

Při použití přepínače -maxcpucount bez zadání hodnoty použije nástroj MSBuild číslo odpovídající počtu procesorů v počítači.

Další informace o tomto přepínači, který byl představen v MSBuild 3.5, najdete v referenčních informacích k příkazovému řádku.

Následující příklad nastaví nástroj MSBuild pro použití tří pracovních procesů. Použitím této konfigurace může nástroj MSBuild provádět souběžné sestavení tří projektů.

msbuild.exe myproj.proj -maxcpucount:3

Parametr úlohy BuildInParallel

BuildInParallelje volitelný logický parametr v MSBuild úkolu. Pokud BuildInParallel je nastavená hodnota (výchozí hodnota je ), vygeneruje se více pracovních procesů, aby se sestavil co nejvíce true true projektů najednou. Aby tento postup správně fungoval, musí být přepínač -maxcpucount nastaven na hodnotu větší než 1 a systém musí být alespoň dvoujádrový nebo mít dva nebo více procesorů.

Následuje příklad nastavení parametru z microsoft.common.targets. 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>

Viz také