用 MSBuild 并行生成多个项目
通过 MSBuild,可通过并行运行多个项目来更快地生成它们。 若要并行运行生成,请在一台多核或多处理器计算机上采用以下设置:
在命令提示符处使用
-maxcpucount
开关。在 MSBuild 任务中使用 BuildInParallel 任务参数。
注意
命令行中的 -verbosity (-v) 开关也可能会影响生成性能。 如果将生成日志信息的详细级别设置为详细或诊断以用于疑难解答,生成性能可能会降低。 有关详细信息,请参阅获取生成日志和命令行参考。
-maxcpucount 开关
如果使用 -maxcpucount
开关(简写为 -m
),MSBuild 将可以创建指定数量的能够并行运行的 MSBuild.exe 进程。 这些进程也称为“工作进程”。每个工作进程使用单独的核心或处理器(若有),以便在其他可用处理器可能生成其他项目的同时生成项目。 例如,如果将此开关的值设置为“4”,MSBuild 将创建 4 个辅助进程来生成项目。
如果包含 -maxcpucount
开关而没有指定值,MSBuild 将使用计算机上的处理器总数作为其值。
有关 MSBuild 3.5 中引入的此开关的详细信息,请参阅命令行参考。
下面的示例指示 MSBuild 使用 3 个辅助进程。 如果使用此配置,MSBuild 可以同时生成三个项目。
msbuild.exe myproj.proj -maxcpucount:3
BuildInParallel 任务参数
BuildInParallel
是 MSBuild 任务上的可选布尔参数。 如果 BuildInParallel
设置为 true
(默认值为 true
),则会生成多个工作进程,以尽可能同时生成多个项目。 要使其正常工作,-maxcpucount
开关必须设置为大于 1 的值。
并行生成仅适用于 MSBuild 任务的单个调用,因此如果调用任务批处理,并行度仅限于每个批次。 请参阅 MSBuild 批处理.
以下示例演示如何使用 BuildInParallel
参数在具有多个不同属性值的项目文件中并行生成目标。
下面是项目文件 do_it.proj
,其中包含一个目标,它只为每个 SourceValue
打印一个不同的消息:
<Project>
<Target Name="DoIt">
<Message Text="For this invocation SourceValue='$(SourceValue)'" Importance="High" />
</Target>
</Project>
以下项目使用项列表和 AdditionalProperties
元数据指定 SourceValue
属性的不同值,以此在 do_it.proj
的 DoIt
中并行生成指定目标。
<Project>
<ItemGroup>
<_Project Include="do_it.proj" AdditionalProperties="SourceValue=Test1" />
<_Project Include="do_it.proj" AdditionalProperties="SourceValue=Test2" />
<_Project Include="do_it.proj" AdditionalProperties="SourceValue=Test3" />
<_Project Include="do_it.proj" AdditionalProperties="SourceValue=Test4" />
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(_Project)" Targets="DoIt" BuildInParallel="true" />
</Target>
</Project>