对于MVC 4,Microsoft.AspNet.Mvc和System.Web.Mvc之间有什么区别?

时间:2012-08-24 00:33:10

标签: asp.net-mvc-4 nuget-package

我有自己的服务器,我正在考虑将我的一个解决方案升级到ASP.NET MVC 4,然后再升级其余的(3 +)。

作为其中的一部分,我为ASP.NET MVC 4下载了the standalone installer并在我的Server 2008 R2上运行它,因为Web Platform Installer 4.0有工具更新,它想要安装Express和其他一些应用

该安装程序使用System.Web.Mvc.dll创建了一个C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies目录。

我经历了the manual upgrade notes for MVC 3 to MVC 4,我刚刚遇到第3项:

  

在“解决方案资源管理器”中,右键单击“引用”,然后选择“管理”   NuGet包。在左侧窗格中,选择Updates \ All,然后更新   以下内容:

     
      
  • ASP.NET MVC 4
  •   
  • (可选)jQuery,jQuery验证和jQuery UI
  •   
  • (可选)实体框架
  •   
  • (Optonal)Modernizr
  •   

从我可以告诉ASP.NET MVC 4引用this NuGet package,它现在包含在Microsoft ASP.NET MVC 4(Microsoft.AspNet.Mvc)中,似乎是用于在共享主机上安装,和云平台。

或者我错过了什么?即使我是我自己的服务器,是否有理由安装此软件包,并且可以按照我的意愿安装/更新.NET框架?

编辑:请注意,检查标题(我还没有关闭它)确实显示该站点的MVC版本是4.0,而且没有NuGet包。修复/功能是否尚未被推入核心包中?它主要用于共享托管环境吗?如果我保留它,是否会导致一些性能损失(如果已安装MVC 4,我会考虑不必要地增加内存使用量)?

1 个答案:

答案 0 :(得分:5)

据我所知,它们完全一样。尽管NuGet包被称为Microsoft.AspNet.Mvc,但它创建的dll文件名为System.Web.Mvc.dll。它与GAC中的System.Web.MVC文件具有相同的大小,程序集签名等。

因此,就目前而言,即使您引用这两个程序集,.NET也应该认识到它们完全相同,并且只加载其中一个程序集。微软有可能推出NuGet软件包,以便在新版本出现时更容易升级,而不是基于核心.NET 4.5文件。或许,正如您猜测的那样,NuGet包使您可以在不允许安装MVC的系统上运行MVC应用程序。