【发布时间】:2011-03-19 00:58:45
【问题描述】:
我无法理解该网站何时被视为“预编译”。据我了解,如果我使用 Visual Studio 中的 Publish 或 Build Deployment Package 选项,那么它是预编译的,但如果我只使用 xcopy 之类的东西,那么它就不是预编译的。对吗?
【问题讨论】:
标签: asp.net compilation publish precompiled pre-compilation
我无法理解该网站何时被视为“预编译”。据我了解,如果我使用 Visual Studio 中的 Publish 或 Build Deployment Package 选项,那么它是预编译的,但如果我只使用 xcopy 之类的东西,那么它就不是预编译的。对吗?
【问题讨论】:
标签: asp.net compilation publish precompiled pre-compilation
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
【讨论】:
从某种意义上说,它是“已编译”的,您将拥有 Web 代码的 MSIL DLL。但是,您仍然必须进行 JIT 编译。如果您使用的是 .NET 2.0 或更高版本,则应使用 NGEN 实用程序来防止此预热时间。请注意,NGEN 仅对消除应用程序的第一次“启动”时间有用。它确实使维护变得更加困难,因为 JIT 代码可能与 NGEN 代码不同步。在我的企业环境中,我们选择不使用 NGEN 是因为存在这些潜在的陷阱。
查看以下链接:
Does it help to use NGEN for ASP.NET Applications?
【讨论】: