允许预编译的VisualStudioWeb页可更新与不可更新有什么区别?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (41)

我已经使用默认的“允许这个预编译的站点可更新”几次建立了一个网站,但是最近的编译网站非常糟糕。在使用.dll(删除并替换它们,在垃圾箱)后,我注意到网站的某些部分开始再次运行,但是如果我将所有原始.dll文件都放入网站中,则会被破坏。

我正在使用带有多个Ajax Web扩展的aspx页面。这些是最近添加的,可能是问题的根源。我没有选中“允许这个预编译的网站是可更新的”,并且它将各种额外编译的代码文件添加到bin中,并且网站的所有问题都消失了......这里发生了什么?有什么区别?

我更新网站的方式似乎没有任何区别,只是每次从Visual Studio直接发布。

提问于
用户回答回答于

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

在阅读完有关部署问题的描述之后,发现错误的可能性更大,因为IIS需要刷新App池。在低端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

用户回答回答于

预编译仅用于部署 如果仅为部署进行预编译,则编译器会从几乎所有通常在运行时编译的ASP.NET源文件生成程序集。这包括页面中的程序代码,.cs和.vb类文件,其他代码文件和资源文件。编译器从输出中删除所有源和标记。在生成的布局中,为每个.aspx文件(扩展名为.compiled)生成编译文件,这些文件包含指向该页面相应程序集的指针。要更改网站(包括页面布局),必须更改原始文件,重新编译网站并重新部署布局。唯一的例外是网站配置; 您可以更改生产服务器上的Web.config文件,而无需重新编译该网站。 预编译部署和更新 当您为部署和更新进行预编译时,编译器会从所有源代码(除单页文件页面中的页面代码)和通常生成程序集的其他文件(例如资源文件)生成程序集。编译器将.aspx文件转换为使用编译后代码模型的单个文件,并将它们复制到布局。通过此选项,您可以在编译网站后对ASP.NET网页进行有限的更改。例如,您可以更改页面的控件,颜色,字体和其他外观方面的排列。您还可以添加控件,只要它们不需要事件处理程序或其他代码即可。当网站第一次运行时,ASP.NET会执行进一步编译以便从标记中创建输出。注意 预编译的可更新站点不允许多个页面引用相同的CodeFile类。

我最近对网站进行了更改,以包含引用相同CodeFile的2个aspx页面(后台使用相同的VB代码)每个页面都有略微不同的html属性,但需要具有相同的CodeFiles,所以对于我删除的第二个ASP页面自动生成的VB代码文件,然后在HTML中引用不同的CodeFile。

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

从这一点上,我需要避免使用默认复选框“允许此预编译的网站可更新”; 它必须保持未选中状态,以便我的网站使用引用多个页面的VB CodeFiles。

扫码关注云+社区