我想知道是否有人知道Visual Studio .NET是否有并行构建过程?我有一个包含大量项目的解决方案,每个项目都有很多标记/代码,很多类型等等。只要坐在那里使用intellisense运行它就可以达到大约700MB。但是构建时间非常慢,而且似乎只有我的两个cpu内核中的一个。
这是否意味着构建过程是单线程的?我的解决方案的构建依赖链不是线性的,所以我不明白为什么它不能并行构建一些项目。我记得Joel Spolsky在他的新SSD上写博客,以及它对编译时间没有帮助,但他没有提到他正在使用哪种编译器。我们正在使用VS 2005.任何人都知道它的编译是如何工作的?在2008/2010,它有什么不同/更好的?
编辑:这里有很多好的回复,但我对C#和ASP.NET特别感兴趣。不爱我们的网民?
MSBuild(VS用于执行构建,从2005 / .NET2开始)支持并行构建。默认情况下,VS会将最大并行度设置为您的处理器数。使用工具|选项|项目和解决方案|构建并运行以覆盖此默认值。
当然,任何一个构建都可能具有更多限制(或没有)容量来允许并行构建。例如。解决方案中只有一个程序集不提供并行构建的范围。同样,大量具有大量依赖关系的程序集可能会阻止并行性(A依赖于B,C依赖于A和B,D依赖于C没有并行构建的范围)。
(对于C ++,在VS 2005和2008中使用自己的构建系统,在2010年,C ++也将使用MSBuild构建。)
斯科特·汉塞尔曼(Scott Hanselman)在几年前的博客文章中提到了细节 使用并行构建和多核CPU,使用MSBuild进行更快的构建 这应该是有意义的。他还有一个后续职位 Hack:Visual Studio IDE中的并行MSBuild。
我建议SSD驱动器将提供最大的好处 显式构建
超级用户 这也驳斥了乔尔的文章
所以要求最好的笔记本电脑等:讨论SSD,核心,VS如何工作等
资格赛:我在一个月或三个月前买了一台英特尔固态硬盘供家庭使用。 Lordy它是快速的,可以说是我买过的最好的套件,除了我的Voodoo 2 ......
使用VS2k5取决于您尝试使用的语言。 C / C ++对多线程构建有“实验性”支持,但直到2k8使用/ m:switch才正式支持此功能
我在Visual Studio 2008中使用了并行构建。它确实加快了速度,但有许多烦人的副作用。
我经常得到失败的构建不是因为某些编译失败,而是因为VS无法写入锁定的符号数据库。我也搞砸了Intellisense的结果。有时我必须重复两次或三次构建才能获得最终成功。