我们的解决方案包含大约20个.vcproj文件。除了主程序之外,大多数都是独立的库,它们只依赖于自己的单元测试。
当我们在VS.NET中构建此解决方案时,我们注意到VS启动了多个VCBuildHelper进程并有效地耗尽了所有可用的核心。但是,当我们运行使用MSBuild实现的每日构建脚本时,我们注意到只使用了一个核心。
我们添加了/ maxcpucount和/ p:BuildInParallel = true,但它仍然无效。
感谢任何帮助。
提前致谢!
答案 0 :(得分:3)
并行构建非常重要,因为MSVS做了一个有趣的“项目顺序”决定并行运行某些东西,而其他的并不是。但是,根据你的描述,你似乎应该看到更多的并行性。
以下是MSBuild团队关于调整并行性的帖子:
http://blogs.msdn.com/b/msbuild/archive/2010/03/08/tuning-c-build-parallelism-in-vs2010.aspx
这是一个YieldDuringToolExecution工具,可以获得更好的并行性(MSBuild 4):
稍微过时一点,这是一个关于在IDE中获得更好的并行性的博客黑客:
http://www.hanselman.com/blog/HackParallelMSBuildsFromWithinTheVisualStudioIDE.aspx
您使用的是哪个MSVS版本?
希望这会有所帮助......
答案 1 :(得分:0)
我们尝试了各种各样的方法,没有运气。现在我们回到了我们的老朋友: devenv xxx.sln / build configuration ,它给了我们与IDE中相同的并行性。
我相信某处隐藏的部分肯定会丢失。我没时间搞清楚:(