Visual Studio中的Publish选项是否被认为是ASP.net Web应用程序的预编译?

时间:2011-03-18 16:32:08

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

我很难理解网站何时被视为“预编译”。据我所知,如果我在Visual Studio中使用Publish或Build Deployment Package选项,那么它是预编译的,但如果我只是使用类似xcopy的东西,那么它不是预编译的。这是对的吗?

2 个答案:

答案 0 :(得分:2)

ASP.NET WebSite项目有一个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

答案 1 :(得分:1)

它是“编译”的,因为您将拥有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