更多的CPU /核心是否有助于VS.NET构建时间?

时间:2010-04-05 14:13:56

标签: c# visual-studio performance visual-studio-2005

我想知道是否有人知道Visual Studio .NET是否有并行构建过程?我有一个包含大量项目的解决方案,每个项目都有很多标记/代码,很多类型等等。只要坐在那里使用intellisense运行它就可以达到大约700MB。但是构建时间非常慢,而且似乎只有我的两个cpu内核中的一个。

这是否意味着构建过程是单线程的?我的解决方案的构建依赖链不是线性的,所以我不明白为什么它不能并行构建一些项目。我记得Joel Spolsky关于他的新SSD的博客,以及它对编译时间没有帮助,但他没有提到他正在使用哪种编译器。我们正在使用VS 2005.任何人都知道它的编译是如何工作的?在2008/2010年,它有什么不同/更好?

编辑:这里有很多好的回复,但我对C#和ASP.NET特别感兴趣。不爱我们的网友吗?

5 个答案:

答案 0 :(得分:9)

MSBuild(VS用于执行构建,来自2005 / .NET2)支持并行构建。默认情况下,VS会将最大并行度设置为您的处理器数。使用工具|选项|项目和解决方案|构建并运行以覆盖此默认值。

当然,任何一个构建都可能具有更多限制(或没有)容量以允许并行构建。例如。解决方案中只有一个程序集不提供并行构建的作用域。同样,大量具有大量依赖性的程序集可能会阻止并行性(A取决于B,C取决于A& B,D取决于C没有并行构建的范围)。

(NB。对于C ++,在VS 2005& 2008中使用自己的构建系统,在2010年C ++也将使用MSBuild构建。)

答案 1 :(得分:4)

斯科特·汉塞尔曼(Scott Hanselman)在几年前发表了一篇博文,其中详细介绍了应该感兴趣的Faster Builds with MSBuild using Parallel Builds and Multicore CPUs。他还有一个跟进帖Hack: Parallel MSBuilds from within the Visual Studio IDE

答案 2 :(得分:2)

我建议SSD驱动器提供最大的好处explicitly for builds

SuperUser也反驳了乔尔的文章

SO asking for best laptop etc:关于SSD,内核,VS如何工作等的讨论

预选赛:我在一个月或三个月前买了一台英特尔固态硬盘供家庭使用。 Lordy它是快速的,可以说是我买过的最好的套件,除了我的Voodoo 2 ......

答案 3 :(得分:1)

使用VS2k5取决于您尝试使用的语言。 C / C ++对多线程构建有“实验性”支持,但直到2k8使用/ m:switch

才能正式支持此功能

答案 4 :(得分:0)

我在Visual Studio 2008中使用了并行构建。它确实加快了速度,但有许多烦人的副作用。

我经常得到失败的构建不是因为某些编译失败,而是因为VS无法写入锁定的符号数据库。我也搞砸了Intellisense的结果。有时我必须重复两次或三次构建以获得最终成功。