似乎我在 .NET 中花费了将近一半的时间在等待 IIS 启动而不是实际开发。
这很简单:每当我有机会访问代码隐藏文件并刷新时,IIS 需要 15 秒到 1 分钟以上的时间来回收。
有什么办法可以改善这一点吗?真让人抓狂。
我在网站项目(不是 Web 应用程序项目)中工作,运行 Windows 7 并在 .NET 4 框架中工作。我的机器才几个月大,带有 SSD,所以我不认为硬件应该是瓶颈。
此外,我什至大部分时间都没有真正调试应用程序,尽管运行速度更慢。
编辑
无论您使用哪种类型的 IIS,加快速度的最佳方法之一是创建一个 RAM 驱动器并将您的 TEMP尤其是 ASP.NET Temporary Files
文件夹指向它。ASP.NET 临时文件包含为您的页面编译的二进制文件。ASP.NET 在启动时会检查此文件夹,并且只重新编译有更改的页面。将此文件夹放在 RAM 驱动器上会使启动时间增加几个数量级。该技术在多篇文章中进行了描述,例如。在“无需任何艰苦工作即可缩短 ASP.NET 编译/加载时间”
另外,您还可以减少 SSD 的磨损。
原来的
对于 Web 应用程序
听起来您已将项目设置为使用 Visual Studio 开发服务器或 IIS Express,而不是机器本地的 IIS 服务。发生这种情况时,Dev Server 从零开始会出现明显延迟。
这是新 Web 项目的默认设置。开发服务器很有用,因为它以随机可用端口上的根虚拟目录启动您的项目。缺点是需要很长时间才能启动。
您可以通过将项目更改为使用本地 IIS 并在特定虚拟目录下启动来显着加快速度。在这种情况下,服务器已经在运行,唯一需要做的就是回收应用程序池。应用程序池回收实际上非常快,除非您在 aspx 页面中嵌入了大量代码,否则您可能不会注意到任何延迟,这需要在每次回收时重新编译。
要更改用于调试的服务器类型,请转到 Web 应用程序的Properties > Web,然后在该Servers
部分中,将选择从 Development Server 更改为 Local IIS。您必须为您的应用程序创建一个虚拟目录,但这可以通过在Project Url
文本框中键入所需的 URL 并按“创建虚拟目录”按钮轻松完成。
对于网站项目
IIS Express/Visual Studio Dev Server 与本地 IIS 实例的影响同样适用于网站项目。基于文件的网站默认使用开发服务器。更改为本地 IIS 服务的过程是不同的。值得庆幸的是,它在如何:在 Visual Studio 中为 Web 项目指定 Web 服务器中进行了详细描述
您必须了解网站项目是如何工作的。每次更改后,每个文件都会在后台编译成自己的 DLL。没有办法改变这一点。
现在,需要多长时间取决于您的代码。您可以采取一些措施来提高速度。您可以清除 \Windows\Microsoft.NET 中的 ASP.NET 临时文件夹,并且可以删除任何未使用的引用或未使用的任何 using 语句。这将减少编译时间。
无论如何,网站项目确实没有得到很好的支持,并且有很多缺点。唯一真正的优势是即时编译,正如您所发现的那样,无论如何这并不是什么大好处。
您可能想阅读这篇文章:
http://msdn.microsoft.com/en-us/library/dd547590.aspx
对于新的开发,我们建议您选择 Web 应用程序项目。本主题解释了网站项目具有一些优势,但许多选择网站项目的开发人员最终发现劣势超过了任何感知到的优势。此外,随着新的 ASP.NET 功能的开发,它们并不总是可用于网站项目。例如,Visual Studio 2012 之后的下一个 Visual Studio 版本将具有用于创建 Web 项目的新工具,而这种新工具将仅适用于 Web 应用程序项目。