加快ASP.NET中的构建时间

时间:2009-04-21 09:11:54

标签: .net asp.net visual-studio-2008 msbuild build-process

我目前正参与一个ASP.NET项目,该项目包含大约40个项目。我们正在克隆的Virtual PC环境中进行所有开发,因此所有开发人员都具有相同的设置。这一切都很好,管理依赖关系很容易,但构建解决方案的速度非常慢。 Virtual PC只能使用一个CPU,因此我实际上只使用了一半的计算机资源。

从构建到完整页面加载需要整整3分钟...随着项目的增长,它每天都在变得越来越糟糕。修复简单的事情开始花费很长时间并且个人而言,我一直在等待,因为在计算机编译时我无法真正工作。

有没有办法在多台计算机上分发我的构建以加快构建过程?

SSD的构建时间会明显改善吗?

还有其他加速构建的方法吗?

注意:我尝试使用 ngen 预编译静态依赖项,但后来读到ASP.NET不支持 ngen 。我使用的是Visual Studio 2008,虚拟环境中没有防病毒软件。

10 个答案:

答案 0 :(得分:6)

通过执行以下操作,您可以大大减少等待ASP.NET构建的时间:

  • 使用新的“optimizeCompilations”标志。它会告诉.NET不要因为你改变了一个项目/ dll而重建整个项目。如果你有40个项目并且不使用它,那么每次在一个项目中更改一个简单方法时,.NET将尝试编译所有其他项目和dll。使用新标志(加上修补程序的安装),您将看到在开发过程中大大提高了整体性能。请查看此博客文章,详细了解如何使用optimizeCompilations标记加快构建速度:http://www.wagnerdanda.me/2009/11/optimizing-asp-net-build-time-with-dynamic-compilation-and-optimizecompilations/

希望它有所帮助!

Wagner Danda da Silva

答案 1 :(得分:4)

以下是使用ASP.NET加快构建时间的另一个提示:

希望它有所帮助!

Wagner Danda da Silva

答案 2 :(得分:3)

您是否每次都需要重建所有40个项目。

您可以配置在解决方案配置设置中构建的内容。

即。如果您的更改仅在您的WebUI项目中,并且其他39个项目未更改,则可以创建仅在重建Web应用程序的构建配置。

  • 查看配置下拉列表
  • 点击“配置管理器”
  • 在“Active Solution Configuration”下拉菜单中,点击“新建”
  • 创建从“调试配置”复制的新配置
  • 在新配置中,取消选中除
  • 中所做的更改之外的所有项目构建

答案 3 :(得分:2)

Scott Gu对此有一个非常有帮助的帖子:

Tip/Trick: Optimizing ASP.NET 2.0 Web Project Build Performance with VS 2005

斯科特还有另一篇关于此硬盘速度的文章,它也对Visual Studio的一般性能有影响:

Tip/Trick: Hard Drive Speed and Visual Studio Performance

答案 4 :(得分:2)

不要在解决方案中放置太多项目。仅在代码在不同进程或不同计算机上运行时才创建新项目。在大多数情况下,创建这么多项目是没有用的。项目数量是msbuild中最显着的减速。

答案 5 :(得分:1)

你没有提到你的Visual Studio版本,但如果它是2005年你可能想考虑升级到2008.在我的情况下,这减少了大型(30+项目)解决方案的构建时间。

另一种选择是预先构建一些不再更改的库,并引用已编译的dll而不是项目。

答案 6 :(得分:1)

我们遇到了类似的情况,我发现我们的虚拟机受到严重限制,因此尽管每个虚拟机都运行在一个CPU上,但它们不允许充分利用该CPU。我设法在一个物理上运行3个虚拟对象,所有运行速度都提高了100%。


我还会考虑减少你的项目数量。我们的主要解决方案有40个项目,我一直在慢慢整合这些项目,并确保新开发项目尽可能适应现有项目。这方面的主要元凶是webservices,其中每个服务最初都是在一个单独的项目中创建的。我现在正在将所有新的Web服务添加到一个项目中,并逐渐将其他项目移动到其中。

答案 7 :(得分:1)

您可能还会考虑切换到使用多个处理器的VMware Workstation。我目前正在使用具有两个双处理器VM的设置,并且所有四个都可以使用。

答案 8 :(得分:1)

我们在公司所做的是使用文件引用,因此只需要构建已更改的项目,并且在任何给定时间我的解决方案中的项目不超过10个,大多数是2~3个。

我们还为每次签到都构建了我们的主干,并为开发人员提供了批处理文件来提取最新的dll。

当然,这并不能阻止痛苦的装配参考错误的发生,但是一段时间后它们会变成一种麻烦而不是问题。

答案 9 :(得分:0)

您是否尝试过调整虚拟PC?

http://www.windowsnetworking.com/articles_tutorials/Tuning-Virtual-PC-Performance.html

旧文章,但要点仍然正确。

我发现,在类似的情况下,为VPC磁盘映像配备一个单独的硬盘可以显着提高性能,尤其是在删除一些限制时。

问题可能不是Visual Studio,而是编译资源密集的事实。