若要更快地生成多个项目,可以使用 MSBuild 并行运行生成。 为此,请使用多核或多处理器计算机上的以下设置:
在命令提示符运行 MSBuild 时,设置
-maxcpucount开关。请在 MSBuild 任务中将 BuildInParallel 任务参数设置为
true。
注释
如果使用 -verbosity (-v) 开关将生成日志信息的详细程度设置为详细或诊断,则生成性能可能会降低。 此开关通常用于故障排除。 有关详细信息,请参阅使用 MSBuild 获取生成日志 和 MSBuild 命令行参考。
-maxcpucount MSBuild 开关
如果使用 -maxcpucount (-m) 开关,MSBuild 将创建可以并行运行的指定 数量的MSBuild.exe 进程。 这些进程也称为 工作进程。 每个工作进程使用单独的核心或处理器(如果有)来生成项目,而其他可用处理器可能正在生成其他项目。
例如,将此开关设置为值4,将导致 MSBuild 创建四个工作进程来生成项目。
如果在未指定值的情况下包括 -maxcpucount 开关,MSBuild 将使用最多可用的处理器数量。
有关此开关的详细信息,请参阅 MSBuild 命令行参考。
以下示例指示 MSBuild 使用三个工作进程。 使用此配置,MSBuild 可以同时生成三个项目。
msbuild.exe myproj.proj -maxcpucount:3
BuildInParallel MSBuild 任务参数
BuildInParallel 是可在 MSBuild 任务上设置的可选布尔参数。
BuildInParallel 设置为 true(默认值)时,将启动多个工作进程,以同时构建尽可能多的项目。 若要使此参数正常工作,请将 -maxcpucount 开关设置为大于一的值。
使用 MSBuild 执行并行构建时,它仅适用于单个 MSBuild 任务的调用。 因此,如果调用任务批处理,并行度仅限于每个批处理。 有关详细信息,请参阅 MSBuild 批处理。
以下示例演示如何使用 BuildInParallel 参数在具有多个不同属性值的项目文件中生成目标。
在此示例中,项目文件 do_it.proj 包含一个目标,该目标用于为每个 SourceValue 打印不同的消息。
<Project>
<Target Name="DoIt">
<Message Text="For this invocation SourceValue='$(SourceValue)'" Importance="High" />
</Target>
</Project>
以下项目使用项列表和元数据在名为 do_it.proj 的项目中并行生成指定的目标 AdditionalProperties,以指定属性SourceValue的不同值。
<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>