90

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

  1. 发布前删除所有现有文件
  2. 发布期间预编译(带有指向配置的链接)
  3. 从 App_Data 文件夹中排除文件

第一个和第三个选项是不言自明的,但是我找不到关于第二个选项的任何文档,因为它适用于 MVC。当我检查它时,网站上生成的文件似乎没有任何变化,而且我没有看到任何真正的性能变化。

4

2 回答 2

89

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

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

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

于 2013-04-23T22:46:56.443 回答
1

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

我的错误信息在这篇文章中是一样的。我的项目是 MVC5,使用 Visual Studio 2013 Professional 构建。 编译错误:两个 DLL 中都存在“ASP.global_asax”类型

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

于 2020-09-18T14:16:45.140 回答