好吧,实际上该/m
选项指定了“要构建的最大并发进程数”。也就是说,msbuild.exe
并行启动以并行构建项目的最大进程数(每个进程最多将构建一个项目)。与“使用所有内核”完全不同的东西。虽然,不可否认,/m
选项的长形式名称/maxcpucount
可能暗示其他情况,但它的描述应该更好地说明正在发生的事情:
/maxcpucount[:n] Specifies the maximum number of concurrent processes to
build with. If the switch is not used, the default
value used is 1. If the switch is used without a value
MSBuild will use up to the number of processors on the
computer. (Short form: /m[:n])
现在,如果您的解决方案不允许项目并行构建,例如因为您的每个项目都是另一个项目的依赖项(例如构建 P2 需要 P1,项目 P3 需要 P2 等),那么您赢了'没有看到任何并行构建发生。根据构建完成的速度,您也不会在所有内核上看到任何相关活动(例如,使用任务管理器),因为 CPU 图表的“闪烁”可能并不准确地反映实际发生的情况(请注意构建是也相当 I/O 密集型,这并没有显示查看 CPU 负载)。
但是,您应该查看(例如使用进程资源管理器或任务管理器)msbuild.exe
与您拥有的内核/CPU 数量相匹配的进程数量(或作为可选数字传递给/m
选项的等效数量。
您可能还想参考这个 SO question。还搜索“parallel msbuild”会产生一些带有更多信息的好结果。