【问题标题】:Is the Publish option in Visual Studio considered pre-compilation for ASP.net Web applications?Visual Studio 中的发布选项是否被视为 ASP.net Web 应用程序的预编译?
【发布时间】:2011-03-19 00:58:45
【问题描述】:

我无法理解该网站何时被视为“预编译”。据我了解,如果我使用 Visual Studio 中的 Publish 或 Build Deployment Package 选项,那么它是预编译的,但如果我只使用 xcopy 之类的东西,那么它就不是预编译的。对吗?

【问题讨论】:

    标签: asp.net compilation publish precompiled pre-compilation


    【解决方案1】:

    ASP.NET 网站项目有一个 xcopy 部署选项,其中所有文件(包括 aspx、aspx.cs、ascx、ascx.cs 等)都按原样复制到生产 Web 服务器。 ASP.NET 运行时在收到第一个请求时编译站点。如果您检查文件夹 C:\Windows\Microsoft.NET\Framework\v\Temporary ASP.NET Files,您可以看到输出。这显然很容易部署,因为我们所要做的就是将文件复制到 Web 服务器。但是,第一个访问者会根据网站第一次编译的时间支付费用。发布选项在部署之前完成这项工作。它编译网站项目并生成可以运行的程序集。发布中有一个选项可以保留 aspx 文件,以便可以修改这些文件。在这两种情况下,都没有 .cs 文件,因为这些文件已编译到程序集中。详情请查看Walkthrough: Publishing a Web Site

    HTH

    【讨论】:

      【解决方案2】:

      从某种意义上说,它是“已编译”的,您将拥有 Web 代码的 MSIL DLL。但是,您仍然必须进行 JIT 编译。如果您使用的是 .NET 2.0 或更高版本,则应使用 NGEN 实用程序来防止此预热时间。请注意,NGEN 仅对消除应用程序的第一次“启动”时间有用。它确实使维护变得更加困难,因为 JIT 代码可能与 NGEN 代码不同步。在我的企业环境中,我们选择不使用 NGEN 是因为存在这些潜在的陷阱。

      查看以下链接:

      Does it help to use NGEN for ASP.NET Applications?

      Microsoft Documentation on NGEN utility

      Potential Pitfalls of using NGEN

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-04
        • 1970-01-01
        相关资源
        最近更新 更多