Параллельное построение нескольких проектов с помощью 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>
См. также
Основные понятия
Использование нескольких процессоров при построении проектов
Написание средств ведения журнала с поддержкой многопроцессорности