1

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

4

2 回答 2

2

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 文件,因为这些文件已编译到程序集。查看演练:发布网站以获取更多详细信息。

高温高压

于 2011-03-18T16:49:59.877 回答
1

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

请参阅以下链接:

将 NGEN 用于 ASP.NET 应用程序是否有帮助?

关于 NGEN 实用程序的 Microsoft 文档

使用 NGEN 的潜在陷阱

于 2011-03-18T16:51:29.177 回答