Asp.net 允许预编译的VisualStudio网页可更新与不可更新有什么区别?

Asp.net 允许预编译的VisualStudio网页可更新与不可更新有什么区别?,asp.net,vb.net,visual-studio,dll,precompiled,Asp.net,Vb.net,Visual Studio,Dll,Precompiled,我已经使用默认的“允许此预编译的站点可更新”构建了一个网站好几次,但是在最近的一次编译中,该网站非常糟糕。在玩过.dll之后(删除并替换它们,放在垃圾桶里),我注意到网站的某些部分又开始工作了,但是如果我把所有原始的.dll放在网站上,它们就坏了 我正在使用带有几个Ajax web扩展的aspx页面。这些是最近添加的,可能是问题的根源。我取消了“允许这个预编译的网站是可更新的”的检查,它将各种额外的编译代码文件添加到bin中,网站的所有问题都消失了。。。这是怎么回事?有什么区别 我更新网站的方式

我已经使用默认的“允许此预编译的站点可更新”构建了一个网站好几次,但是在最近的一次编译中,该网站非常糟糕。在玩过.dll之后(删除并替换它们,放在垃圾桶里),我注意到网站的某些部分又开始工作了,但是如果我把所有原始的.dll放在网站上,它们就坏了

我正在使用带有几个Ajax web扩展的aspx页面。这些是最近添加的,可能是问题的根源。我取消了“允许这个预编译的网站是可更新的”的检查,它将各种额外的编译代码文件添加到bin中,网站的所有问题都消失了。。。这是怎么回事?有什么区别

我更新网站的方式似乎也没有什么不同,只是每次都直接从VisualStudio发布

如有任何见解,将不胜感激

取消选中“允许此预编译站点可更新”将编译.Aspx页面,而不仅仅是代码文件(.VB/.CS)。保持选中状态允许您在部署.Aspx文件后对其进行某些更改,而无需重新编译(ex=移动控件的位置或添加一些额外的HTML标记)

在阅读您对部署问题的描述后,似乎更可能是因为IIS需要刷新应用程序池而导致错误。在低端VPS上,如果您有这种奢侈,有时反弹(重新启动)它是有意义的

有关站点预编译的更多信息,请阅读以下MSDN文章


根据诺利亚斯所说的,我对自己的问题有一个答案。我阅读了这两个链接,发现了以下内容:

仅为部署预编译
当您为部署而预编译时 仅编译器从几乎所有ASP.NET生成程序集 通常在运行时编译的源文件。这包括 程序代码页、.cs和.vb类文件、其他代码文件和 资源文件。编译器将从中删除所有源代码和标记 输出。在生成的布局中,将为每个布局生成编译文件 包含以下内容的.aspx文件(扩展名为.compiled) 指向该页的相应程序集的指针。改变现状 网站,包括页面的布局,你必须改变原来的 文件,重新编译站点,并重新部署布局。唯一的例外 是站点配置;您可以对Web.config文件进行更改 在生产服务器上,无需重新编译站点。这 选项为您的页面和应用程序提供最大程度的保护 启动时的最佳性能

部署和更新的预编译
当您为部署和更新而预编译时,编译器 从所有源代码(中的页面代码除外)生成程序集 单个文件页)和其他通常生成 程序集,例如资源文件。编译器将转换.aspx文件 转换为使用编译后的代码隐藏模型和副本的单个文件 将它们添加到布局中。此选项允许您进行有限的更改 编译网站中的ASP.NET网页后,将其复制到这些网页。对于 例如,您可以更改控件、颜色、字体的排列, 以及页面的其他外观方面。还可以添加控件,如图所示 只要它们不需要事件处理程序或其他代码。当 网站第一次运行时,ASP.NET将在中执行进一步编译 以从标记创建输出。注

预编译的可更新站点不允许复制多个页面 引用相同的代码文件类

我最近对该网站进行了更改,包括两个引用相同代码文件(背景中的VB代码相同)的aspx页面。每个页面的html属性略有不同,但需要具有相同的代码文件,因此,对于我的第二个ASP页面,我删除了自动生成的VB代码文件,然后在HTML中引用了不同的代码文件

如上所述,预编译的可更新站点不允许多个页面引用同一代码文件类。这就是为什么我的一些页面不起作用

从现在开始,我需要避免使用默认复选框“允许此预编译站点可更新”;必须保持未选中状态,我的网站才能使用引用我多个页面的VB代码文件

结论:引用同一代码文件的多个aspx页面需要预编译才能正确运行。这意味着该网站将无法有任何改变,它没有重新剥离