繁体   English   中英

加快Visual Studio 2010 / Resharper / ASP.NET MVC中的编译和单元测试

[英]Speeding up compilation and unit testing in Visual Studio 2010 / Resharper / ASP.NET MVC

我正在使用Visual Studio 2010和Resharper开发中型ASP.NET MVC解决方案。 当我在1年半前开始开发它时,该项目非常快,但随着时间的推移,它变得越来越慢 - 不仅是编译,而且是ASP.NET重新初始化网站所需的时间。 由于我经常练习TDD和重构,我经常需要重新编译重新运行我的测试,所以我正在寻找方法来缓解这种情况,如果可能的话。

这个问题详细

从开始重新编译项目到能够在Web浏览器中查看结果,我需要大约20-25秒。

使用Resharper测试运行器运行单个单元测试(仅一个测试,而不是整个套件)也非常慢(大约15-20秒)。 出于一些奇怪的原因,似乎Resharper大部分时间都在初始化测试运行并且只花费很小一部分实际运行测试。

我已经做了什么:

  • 用SSD替换我的硬盘(巨大的影响)
  • 将ASP.NET的编译和Windows Temp目录目录移动到类似SSD的(硬件)RAM驱动器(影响很大,但那是在SSD之前)
  • 禁用自动编译我很少修改的一个项目(因为该项目的影响很小,无论如何)。
  • 淘汰了对.NET和第三方库的不必要的引用(非常小的影响,如果有的话)
  • 这篇博文中讨论了一些黑魔法技巧。 (影响很小,如果有的话)。

然而,我仍然坚持上面的(缓慢?)数字,我觉得这会损害我的生产力。 现在我想知道下一步该做什么。

我目前的系统设置:

  • Core 2 Quad Q6600 CPU
  • 4GB DDR2 800 RAM
  • 120 GB SSD
  • Windows 7 x64
  • Visual Studio 2010 Ultimate与Resharper 5.5

我的解决方案的规格:

  • 22.000行.NET 4 C#代码
  • 3个项目:一个ASP.NET MVC,一个测试项目,一个小型通用库包含在另外两个中,除非发生变化,否则我不会编译。
  • 35个对其他库的引用(.NET框架和开源的东西)
  • ~200意见
  • 850单元测试

现在我的问题:

  • 将我的RAM升级到8GB可以给我带来显着的性能提升吗?
  • 这些数字是否正常? 或许这可能是我的解决方案的问题?
  • 接下来你会尝试什么(除了购买一台全新的电脑)?

谢谢,

阿德里安

编辑:一个特别奇怪的事情是,当我点击“构建解决方案”按钮时,Visual Studio花了大约8秒钟向我显示一个等待符号,直到它实际开始编译并且正在更新编译窗口。 在此期间,IDE是不受欢迎的。 这是实际编译时间的很大一部分。 我想知道Visual Studio在此期间做了什么?

对于那个大小的解决方案,看起来你的硬件确实没问题,应该足够快,可以进行构建测试。 我发现大多数构建性能问题(无论如何)都与项目依赖性有关,而与实际编译时间无关。 我有几个想法可以帮助您找出问题所在:

  1. 尝试将“MSBuild项目构建输出详细程度”转换为“诊断”(选项 - >项目和解决方案 - >构建和运行),同时安装VSCommands扩展(它包含显示每个步骤所用时间的构建统计信息扩展)并检查什么是谈论最多的时间。

  2. GAC中是否依赖于其他项目(您引用的35个),或者它们是否分散在您的HD中? 它们是自动刷新引用(它们下面是否有.refresh文件)。 Maay尝试简化这些依赖项的解析,即将本地所有DLL复制到bin目录,看看它是否有帮助

你可以试试这个秘密Resharper.Internal特征“一致与MSBuild的建设”作为描述在这里

由于这是一个MVC项目,请确保您的项目的“构建视图”已关闭。

  1. 右键单击项目文件 - >在MVC项目上卸载项目
  2. 右键单击Project File - > Edit Project
  3. 检查设置... false
  4. 保存并右键单击 - >重新加载项目。

我保留它,以便编译器在我的客户之前发现我的错误。 但构建视图非常缓慢。

我遇到了类似的问题。 自从我点击'Run tests'按钮后,花了一分钟左右的时间让测试运行。

我的问题是我的测试设置指向'Trace and Impact'而不是'Local'

要选择测试设置,请转到'Test'菜单,然后'Select Active Test Settings > Local'

这对我有用。

类似的问题在这里,我打开了“代码覆盖率”。

您可以设置将运行的构建服务器:

  • 建立
  • 测试
  • 部署

您将不得不等待大约相同的时间才能看到新版本上线,但它不会消耗您的开发PC资源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM