병렬로 여러 프로젝트 빌드
MSBuild 3.5에서는 다음과 같은 두 가지 방법으로 다중 프로세서 또는 다중 핵심 프로세서의 빌드 성능을 최적화할 수 있습니다.
명령줄에서 /maxcpucount 스위치 사용
MSBuild 작업에서 BuildInParallel 작업 매개 변수 사용
/Maxcpucount 스위치
/maxcpucount 스위치(또는 줄여서 /m)를 사용하면 MSBuild 3.5에서 병렬로 실행할 수 있는 지정된 수의 MSBuild.exe 프로세스를 만들 수 있습니다. 이러한 프로세스는 "작업자 프로세스"라고도 합니다. 각 작업자 프로세스는 가능한 경우 별도의 핵심 또는 프로세서를 사용하여 사용 가능한 다른 프로세서에서 다른 프로젝트를 빌드하는 동시에 프로젝트를 빌드합니다. 예를 들어, /maxcpucount의 값을 "4"로 설정하면 MSBuild에서 프로젝트를 빌드하기 위해 네 개의 작업자 프로세스를 만듭니다.
다음 예제에서는 명령줄에서 /maxcpucount 스위치를 사용하는 방법을 보여 줍니다.
C:\WINDOWS\Microsoft.NET\Framework\v3.5>msbuild.exe myproj.proj /maxcpucount:3
이 예제에서는 세 개의 작업자 프로세스를 사용하여 프로젝트를 빌드하도록 MSBuild에 지시합니다. 이 구성을 사용하면 동시에 세 개의 프로젝트를 빌드할 수 있습니다. 빌드 성능을 최적화하려면 /maxcpucount의 값을 시스템에 있는 프로세서 수 또는 코어 수와 같게 설정합니다.
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>