mel*_*onk 22 vb.net asp.net dll precompiled visual-studio
我使用默认的"允许此预编译站点可更新"多次构建一个网站,但是在最近的编译中,网站非常破碎.在玩了.dll之后(删除并替换它们,在bin中)我注意到网站的某些部分重新开始工作,但是如果我把所有原始的.dll放在网站上就被打破了.
我正在使用带有几个Ajax Web扩展的aspx页面.这些是最近添加的,可能是问题的根源.我取消选中"允许此预编译站点可更新",并将各种额外编译的代码文件添加到bin中,并且网站的所有问题都消失了......这里发生了什么?有什么区别?
我更新网站的方式似乎没有任何差别,每次只是从Visual Studio直接发布.
任何见解将不胜感激.
N0A*_*ias 19
取消选中"允许此预编译站点可更新"将编译.Aspx页面,而不仅仅是代码文件(.VB/.CS).保持检查状态允许您在部署之后对.Aspx文件进行某些更改而不重新编译(例如,移动控件的位置或添加一些额外的HTML标记).
在阅读了部署问题的描述之后,错误似乎更可能是因为IIS需要刷新应用程序池.在低端VPS上,如果你拥有那种奢侈品,有时它会弹跳(重启)它.
有关站点预编译的更多信息,请阅读以下MSDN文章.
http://msdn.microsoft.com/en-us/library/399f057w(v=vs.80).aspx
http://msdn.microsoft.com/en-us/library/ms247286(v=vs.80).aspx
根据NoAlias的说法,我对自己的问题有一个答案.我读了两个链接,发现了以下内容:
仅用于部署的预编译
当您仅为部署进行预编译时,编译器将从几乎所有通常在运行时编译的ASP.NET源文件生成程序集.这包括页面,.cs和.vb类文件,其他代码文件和资源文件中的程序代码.编译器从输出中删除所有源和标记.在生成的布局中,为每个.aspx文件(扩展名为.compiled)生成编译文件,这些文件包含指向该页面的相应程序集的指针.要更改网站(包括页面布局),您必须更改原始文件,重新编译网站并重新部署布局.唯一的例外是网站配置; 您可以更改生产服务器上的Web.config文件,而无需重新编译该站点.此选项为您的页面提供最大程度的保护,并在启动时提供最佳性能.部署和更新的
预编译当您进行预编译以进行部署和更新时,编译器会从所有源代码(单文件页面中的页面代码除外)以及通常生成程序集(如资源文件)的其他文件生成程序集.编译器将.aspx文件转换为使用已编译的代码隐藏模型的单个文件,并将它们复制到布局中.通过此选项,您可以在编译后对站点中的ASP.NET网页进行有限的更改.例如,您可以更改页面的控件,颜色,字体和其他外观方面的排列.您还可以添加控件,只要它们不需要事件处理程序或其他代码即可.当站点第一次运行时,ASP.NET会执行进一步编译,以便从标记创建输出.注意预编译的可更新站点不允许多个页面引用相同的CodeFile类.
我最近对网站进行了更改,包括2个引用相同CodeFile的aspx页面(后台的VB代码相同)每个页面的html属性略有不同,但需要具有相同的CodeFiles,所以对于我的第二个ASP页面,我删除了自动生成的VB代码文件,然后在HTML中引用不同的CodeFile.
如上所述,预编译的可更新站点不允许多个页面引用相同的代码文件类.这就是我的一些页面无效的原因.
从现在开始,我需要避免使用默认复选框"允许此预编译站点可更新"; 我的网站必须保持未经检查才能使用引用我的多个页面的VB CodeFiles.
结论:需要预编译引用相同CodeFile的多个aspx页面才能正确运行.这意味着如果没有重新赘述,网站将无法对其进行任何更改.