【问题标题】:What is the difference between allowing a precompiled Visual Studio Web Page to be updatable and not?允许预编译的 Visual Studio 网页可更新与不可更新有什么区别?
【发布时间】:2023-03-12 12:05:01
【问题描述】:

我已经使用默认的“允许此预编译的站点可更新”多次构建了一个网站,但是在最近的编译中,该网站非常损坏。在玩弄了 .dll(在 bin 中删除和替换它们)之后,我注意到网站的某些部分又开始工作了,但是如果我将所有原始 .dll 放入网站中,就会损坏。

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

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

任何见解将不胜感激。

【问题讨论】:

    标签: asp.net vb.net visual-studio dll precompiled


    【解决方案1】:

    根据 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 代码文件。

    结论:引用同一个CodeFile的多个aspx页面需要预编译才能正常运行。这意味着如果不重新部署,网站将无法对其进行任何更改。

    【讨论】:

      【解决方案2】:

      取消选中“允许此预编译站点可更新”会编译 .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

      【讨论】:

        猜你喜欢
        • 2021-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多