最近遇到一个奇怪的问题,系统中的一个ASP.NET MVC项目每次只要一打开就会出现:命名空间“System.Web”中不存在类型或命名空间名称“Mvc”(是否缺少程序集引用?) 这个错误提示。
后经过排查,造成此问题的原因在于System.Web.Mvc.dll是手动添加引用的,在类库中手动添加Mvc命名空间一旦项目拷贝到其他地方、整体目录有大的更改、或者本地电脑上Mvc.dll文件路径不正确,就可能会出现上述缺少程序集引用以及。
无效的System.Web.Mvc引用,在VS2013中用一个黄色三角形作为警告标志:
具体的错误信息:
错误 7 命名空间“System.Web”中不存在类型或命名空间名称“Mvc”(是否缺少程序集引用?) F:\Code\Repos\HC_InformationSystem\Model\AccountModels.cs 95 21 Models
警告 8 未能解析此引用。未能找到程序集“System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL”。请检查磁盘上是否存在该程序集。 如果您的代码需要此引用,则可能出现编译错误。 Models
解决这个问题很简单,由于使用的是 Visual Studio Community 2013,所以我们只要使用Nuget来加载ASP.NET MVC的包就可以解决这个问题,以后项目无论如何改变都不会出现Mvc引用失败和无法解析的问题了,NuGet管理工具会自动帮助我们将MVC的包安装到项目中。类库和项目中的一些包的引用,最好还是使用NUGET来管理,不仅方便也可减少很多问题。
具体解决步骤如下:
一、首先在VS2013中右键点击项目的解决方法,然后选择管理解决方案的NuGet程序包.
二、在管理操作界面中,选择已安装的包=》全部,找到如下图所示Microsoft ASP.NET MVC 和 Microsoft ASP.NET MVC 简体中文资源这两个包。
点击这两个包的管理,在选择项目中将有用到Mvc.dll的项目打上勾(由于这个项目本身是ASP.NET MVC 项目,所以默认就有这两个包,不然要另外通过NUGET先安装包,在添加到其他的项目中):
完成MVC包的添加后,项目中的Mvc.dll就完成引用,重新生成下解决方案,警告和错误提示都不在显示了。