【问题标题】:How to make Asp.net Web Application Debug time shorter?如何缩短 Asp.net Web 应用程序调试时间?
【发布时间】:2012-05-31 00:21:04
【问题描述】:

我有一个具有以下属性的大型 ASP.NET Web 应用程序:

  • 我正在使用 Visual Studio 2010 Ultimate IDE
  • .Net Framework 3.5
  • ASP.NET(网络应用程序)
  • NHibernate 版本 2.2 用作本项目中的 ORM
  • 开发者系统:CPU 双核 2.94GHz x64,6GB 内存
  • 项目重建时间 3 ~ 4 分钟
  • 更改后构建项目通常需要 1 分钟

当开发人员尝试在默认模式下浏览页面时,需要 2 到 4 分钟 才能显示第一个页面,并且他/她可以在合理的时间内浏览其他页面

当开发者想要调试一个页面时,需要 4 ~ 7 分钟才能看到第一页等等。

因此,如果开发人员对代码进行了更改并想在调试模式下对其进行检查,他/她会发疯的,因为检查代码中的微小更改需要花费大量时间。

有什么办法可以减少调试时间?

我将一个大项目缩减为许多小项目。 (小的现在可以在很短的时间内调试,所以大部分都很好)

但是 4 个仍然很大的项目存在同样的问题,它们没有任何改变。我也在本地 IIS 中部署它们,但没有任何改变。

任何建议将不胜感激

提前谢谢你

【问题讨论】:

  • 两个问题:(1)你说的大是什么意思?大约有多少页面和用户控件? (2) App_Code 中有多少个文件?在 App_Code 中编译大量类会显着减慢编译时间。
  • 你知道有多少初始化时间是编译与加载资源(即缓存来自外部源的数据和资源)吗?换句话说,如果在全局 asax 应用程序启动事件处理程序中设置断点,需要多长时间才能击中它?如果您在自定义站点初始化代码之前立即放置另一个断点,这需要多长时间?基本上,我们需要有关 AppDomain 启动和请求的页面/控件编译的哪一部分花费时间最长的数据。
  • 在 UI 上工作时,通常不需要在每次更改标记时都重新启动应用程序。您只需在浏览器中按 F5 即可立即查看更改,甚至无需重新编译 Web 应用程序。如果你修改了后面的代码并需要重新编译,那么单元测试部分就来了。不幸的是,如果应用程序设计不佳并且不同层之间存在强耦合,则很难应用这些概念。
  • 另外,对于非常大的项目,我发现固态驱动器可以提供很大帮助,尤其是对于在本地运行数据库引擎的开发机器。这当然不能解决无法管理的大型项目的根本问题,但它可能有助于以相对较小的成本(100-150 美元)减少构建时间。
  • 为了测试非常小的更改,您可以尝试在 Web 项目属性中的 Web > Debuggers 下检查 Enable Edit and Continue。

标签: c# asp.net performance debugging deployment


【解决方案1】:

在大型 Web 项目中有用的是明智地使用单元测试(例如 microsoft 或 nunit)来测试业务对象和逻辑、数据库连接等。由于在这种情况下不需要开发 Web 服务器和 Web 表单开销,因此可以更快地调试单元测试。以这种方式工作,主要的慢速调试器将仅用于非常特定的 Web UI 问题。

【讨论】:

    【解决方案2】:

    因为您使用 NHibernate 作为 ORM,所以我唯一可能认为它需要这么长时间是因为您滥用它,导致 SELECT N+1 问题或类似问题。

    另一方面,我不知道你的解决方案结构,但我建议你看看这里: http://geekswithblogs.net/MarkPearl/archive/2012/05/24/vs2010-large-solution-bottle-neck.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-24
      • 1970-01-01
      相关资源
      最近更新 更多