Поделиться через


Параллельное построение нескольких проектов с помощью MSBuild

Можно использовать несколько проектов MSBuild построение быстрее, щелкните их параллельно. Для выполнения построения параллельно используются следующие параметры на компьютере многоядерной или многопроцессорных:

  • Параметр /maxcpucount в командной строке.

  • Параметра задачи BuildInParallel в задаче MSBuild.

Примечание

Параметр /verbosity (/v) в командной строке также может влиять на производительность построения.Построения может снизить производительность, если детализация XML-данных журнала построения задается подробными или диагностическому, которые используются для устранения неполадок.Дополнительные сведения см. в разделах Получение журналов построения с помощью MSBuild и Справочник по командной строке MSBuild.

Ключ /maxcpucount

Если используется параметр /maxcpucount, или сокращенно /m, MSBuild может создать определенное число процессов MSBuild.exe, которые могут выполняться параллельно. Эти процессы также называются «рабочие процессы». В каждом рабочем процессе используется отдельное ядро или процессор (если доступен) для построения проекта, в то время как другими доступными процессорами могут создаваться другие проекты. Например, устанавливать этот параметр в значение «4» приводит к созданию MSBuild 4 рабочего процесса для построения проекта.

Если включить параметр /maxcpucount без указания значения, MSBuild будет использовать до количества процессоров в компьютере.

Дополнительные сведения о этот параметр, который впервые был представлен в MSBuild 3.5 см. в разделе Справочник по командной строке MSBuild.

Следующий пример сообщает MSBuild 3 для использования рабочего процесса. При использовании этой конфигурации, может выполнить построение проекта MSBuild 3 одновременно.

msbuild.exe myproj.proj /maxcpucount:3

Параметр задачи BuildInParallel

BuildInParallel — это необязательный логический параметр в задаче MSBuild. Если для параметра BuildInParallel задано значение true (по умолчанию), создается несколько рабочих процессов для одновременного построения максимально допустимого числа проектов. Для правильной работы в этом случае необходимо, чтобы ключу /maxcpucount было присвоено значение больше 1 и в системе имелось хотя бы два ядра или не менее двух процессоров.

Далее приводится пример, взятый из 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>

См. также

Основные понятия

Использование нескольких процессоров при построении проектов

Написание средств ведения журнала с поддержкой многопроцессорности

Другие ресурсы

Блог параллелизма в ходе построения C++