【问题标题】:Understanding ASP.NET compilation of web site projects了解网站项目的 ASP.NET 编译
【发布时间】:2010-08-19 15:51:31
【问题描述】:

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

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

如果我更新页面的源代码,ASP.NET 会以某种方式检测到更改并重新编译?它是只重新编译一个页面还是将所有内容都放在 bin\MySiteName.dll 中?

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

【问题讨论】:

    标签: asp.net .net-4.0


    【解决方案1】:

    您是对的,只要您对源代码文件进行更改,网站项目程序集的缓存就会失效。如 MSDN 中所述:

    对动态编译的任何更改 文件会自动失效 文件的缓存编译程序集和 触发所有受影响的重新编译 资源。下次请求 代码制作完成,ASP.NET 识别 代码已更改并且 重新编译受影响的资源 Web 应用程序。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2012-02-09
          • 1970-01-01
          • 2018-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多