2010-08-19 93 views
1

下面是我理解asp.net编译的方法。请纠正我理解中的任何错误。了解网站项目的ASP.NET编译

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

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

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

回答

1

基本上,我认为你是对的。我会告诉你的一件事是,可以预编译一个ASP.NET应用程序,以便第一次加载不会太慢。基本上,你使用aspnet_compiler.exe来完成这个任务。有关更多信息,请参阅http://msdn.microsoft.com/en-us/library/bb398860.aspx以获取更多信息。

2

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

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

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

有趣,注意:带自动编译,离开调试=假你的web.config文件中,一旦你把你的网站项目生产是非常重要的。如果您忘记了它,批处理编译将被关闭,并且将为每个请求的源页面生成一个程序集!你可以在If broken it is, fix it you should的博客上阅读更多关于它的信息。