用 MSBuild 并行生成多个项目

可以使用 MSBuild 通过并行运行 bug 的速度成多个项目。并行若要运行生成,将使用在一台多核或多个处理器计算机上的以下设置:

  • 在命令提示符处 /maxcpucount 开关。

  • 在 MSBuild 任务的 BuildInParallel 任务参数。

说明说明

在命令行上 /verbosity (/v) 开关也会影响生成性能。生成性能可能会降低,如果您的生成日志信息的详细级别设置为详细或诊断,对于疑难解答使用。有关更多信息,请参见用 MSBuild 获取生成日志MSBuild 命令行参考

/maxcpucount 开关

如果您确定使用 /maxcpucount 开关 ( /m,MSBuild 可以创建可以并行运行 MSBuild.exe 指定数目的过程。这些进程也称为“辅助进程”。当其他可用处理器正在生成其他项目时,每个辅助进程可使用一个单独的核心或处理器(如果可用)来生成项目。例如,此开关设置为值“4 "理由创建四个辅助的 MSBuild 处理生成项目。

如果包含 /maxcpucount 开关,而无需指定值,MSBuild 将使用最计算机上的处理器数。

有关此开关的更多信息,在 MSBuild 3.5 中引入,请参见 MSBuild 命令行参考

下面的示例指示 MSBuild 使用三个辅助进程来。如果使用此配置,MSBuild 可以同时生成三个项目。

C:\WINDOWS\Microsoft.NET\Framework\v3.5>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++ 生成并行博客