了解ASP.NET网站项目的编译

时间:2010-08-19 15:51:32

标签: asp.net .net-4.0

以下是我对asp.net编译的理解。请更正我理解中的任何错误。

如果我不发布网站项目,而只是简单地将所有文件复制到网络目录,我知道第一次访问它编译,所以第一次访问它有点慢。从那时起(如果我不更新源代码)网站保持编译正确(E.G。它不在缓存过期)?

如果我更新页面源,ASP.NET会检测到更改并重新编译,该怎么办?它是重新编译一个页面还是将所有内容放在bin \ MySiteName.dll中?

最后,如果我发布一个网站,我无法更新源代码(aspx是,但不是页面后面的代码)。这预先编译了站点,因此第一次加载很快。该网站将永远编译,直到新发布。

3 个答案:

答案 0 :(得分:2)

您是对的,每当您对源代码文件应用更改时,Web站点项目程序集的缓存都会失效。如MSDN中所述:

  

对动态编译的任何更改   文件将自动失效   file的缓存编译程序集和   触发重新编译所有受影响的   资源。下次请求时   代码是由ASP.NET识别的   代码已经改变了   重新编译受影响的资源   Web应用程序。

据我所知,你的程序集没有附加过期日期,除非它被删除(程序集存储在%WINDIR%\ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \ name_or_web_site)。

有趣的提示:通过自动编译,将Web站点项目投入生产后,将 debug = false 留在web.config文件中非常重要。如果忘了它,将关闭批量编译,并为每个请求的源页面生成一个程序集!您可以在If broken it is, fix it you should的博客上阅读更多相关信息。

答案 1 :(得分:1)

Here's an article会有所帮助。这比你说的要多一些,但它可以帮助你。

答案 2 :(得分:1)

基本上,我认为你说得对。我要告诉你的一件事是,可以预编译一个ASP.NET应用程序,这样第一次加载就不会那么慢。基本上,您使用aspnet_compiler.exe执行此任务。有关您可能想要的更多信息,请参阅http://msdn.microsoft.com/en-us/library/bb398860.aspx