发布选项中的新预编译对MVC4应用程序有什么影响?

时间:2013-04-23 21:30:20

标签: asp.net-mvc-4 visual-studio-2012

所以我最近将Visual Studio 2012更新为更新2.请注意,下次我发布我的应用程序时(在这种情况下通过File Publish)我注意到有三个新选项:

  1. 在发布之前删除所有现有文件
  2. 发布时预编译(带有指向配置的链接)
  3. 从App_Data文件夹中排除文件
  4. 第一个和第三个选项非常明显,但我找不到第二个选项的任何文档,因为它适用于MVC。当我检查它时,网站上生成的文件似乎没有任何变化,我没有看到任何真正的性能变化。

2 个答案:

答案 0 :(得分:78)

使用ASP.NET预编译器会对MVC应用程序产生以下影响:

  • 如果App_Code中有任何内容,则会在部署之前将其预编译为DLL。如果没有预编译,这将由ASP.NET运行时动态发生。
  • 如果您选择选项使您的页面可更新(即取消选中高级设置对话框中的第一个复选框),它还会预先编译您的视图(ASPX和Razor),而不是动态编译它们在运行时也是如此。 “允许预编译站点可更新”的默认(选中)设置允许您更新视图内容,而无需重建整个项目。

如果App_Code中没有任何文件,并且您希望自己的网站保持可更新状态,那么它似乎没什么用。

答案 1 :(得分:0)

这是一个古老的问题,但我只是遇到类似的问题,并感到值得分享。

我的错误消息在这篇文章中是相同的。我的项目是MVC5,使用Visual Studio 2013 Professional构建。 Compilation Error: The type 'ASP.global_asax' exists in both DLLs

对于我来说,使用precompile选项时,bin文件夹中有一个文件App_global.asax.dll,并导致上述错误消息。 首先,我在服务器上删除App_global.asax.dll,重新启动应用程序池,问题消失了。 然后我尝试了另一种方法,取消选中预编译并重新发布,重新部署到服务器,问题就解决了。