visual-studio-2008 - MSBuild 没有构建所有内核

标签 visual-studio-2008 msbuild parallel-processing

我有一个配置了 Visual Studios 2008 的项目。当我打开 IDE 并点击构建时,我系统上的所有内核都用于构建该项目。但是,当我尝试从命令行构建时,只使用了 1 个核心。这是我正在运行的命令:

C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild VTK.sln /m /fl /tv:3.5 /p:Configuration=RelWithDebInfo

从阅读文档来看,/m 开关似乎应该告诉 MSBuild 使用所有内核,但它没有。有什么想法可以让它使用所有内核吗?

谢谢

最佳答案

好吧,实际上 /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 负载)。

但是,您应该看到(例如使用 Process Explorer 或任务管理器)许多 msbuild.exe 进程与您拥有的核心/CPU 数量(或您拥有的等效数量)相匹配作为可选数字传递给 /m 选项。

您可能还想引用 this SO question .此外,搜索“parallel msbuild”会产生一些包含更多信息的不错结果。

关于visual-studio-2008 - MSBuild 没有构建所有内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10423390/

相关文章:

c# - 有什么办法可以加快 Excel 导入速度吗?

erlang - 哪些操作会导致并行代码运行缓慢?

c# - 从当前日期获取星期几并指定星期几

build - 将构建日志创建到特定项目文件夹中,同时从 Cmd 控制台使用 MSbuild 编译 .sln 文件

visual-studio-2008 - 如何在 Visual Studio 2008 中打开团队资源管理器

iis-7 - 使用 WMSVC 和 NTLM Auth 部署到 IIS7 时如何在没有用户名和密码的情况下编写 MSBuild 参数?

visual-studio - 让 msbuild 使用 MT_StaticRelease

java - Java 8 上的同步和 ExecutorService

visual-studio-2008 - 手动编辑 .vcproj (VS2008) 文件后,源文件列表不见了

visual-studio-2008 - Web 服务器找不到请求的资源