我一直无法找到答案并且整个周末都在网上搜索,所以我希望也许你可以帮我解决这个问题。
使用Visual Studio 2012时,我创建了一个新的MVC4 Web应用程序项目并获得了一些编译错误。
这是我的问题:
我使用Visual Studio 2012创建了一个新的MVC4 Web应用程序,我选择了Internet Application并将其设置为使用RAZOR Engine。
我转到应用程序属性,在“应用程序”选项卡下,我将目标框架从.NET Framework 4.5更改为.NET Framework 4。
构建会产生以下错误:
错误1找不到类型名称“TableAttribute”。此类型已转发到程序集'System.ComponentModel.DataAnnotations,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'。考虑添加对该程序集的引用。 c:\ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels.cs 21 6 MvcApplication1
错误2找不到类型或命名空间名称“Table”(您是否缺少using指令或程序集引用?)c:\ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels.cs 21 6 MvcApplication1
错误3找不到类型或命名空间名称“DatabaseGeneratedAttributeAttribute”(您是否缺少using指令或程序集引用?)c:\ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels.cs 25 10 MvcApplication1
错误4找不到类型名称“DatabaseGeneratedAttribute”。此类型已转发到程序集'System.ComponentModel.DataAnnotations,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'。考虑添加对该程序集的引用。 c:\ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels.cs 25 10 MvcApplication1
错误5找不到类型或命名空间名称'CompareAttribute'(您是否缺少using指令或程序集引用?)c:\ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels.cs 54 10 MvcApplication1
错误6找不到类型或命名空间名称“比较”(您是否缺少using指令或程序集引用?)c:\ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels.cs 54 10 MvcApplication1
错误7找不到类型或命名空间名称'CompareAttribute'(您是否缺少using指令或程序集引用?)c:\ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels.cs 87 10 MvcApplication1
错误8找不到类型或命名空间名称'Compare'(您是否缺少using指令或程序集引用?)c:\ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels.cs 87 10 MvcApplication1
答案 0 :(得分:26)
只需重新安装EntityFramework:
这就是错误应该消失!
答案 1 :(得分:7)
实际上,这不是MVC4模板项目的问题,而是改变目标.Net Framework。
在VS2012中创建新的MVC4项目时,它(默认情况下)将引用.Net 4.5。所有文件都是基于此版本生成的。 AccountModel使用System.ComponentModel.DataAnnotations
(TableAttribute
,DatabaseGeneratedAttribute
,...
重新定位框架版本只会更改引用,不会影响源代码:4.5框架中的属性不会被删除。
如果你想要一台带有.Net 4.0的MVC4项目,你可以:
答案 2 :(得分:1)
Uninstall-Package entityframework / Install-Package实体框架解决方案对我来说并不起作用。相反,我必须在记事本中打开.csproj文件并执行查找并替换" net40"到" net45"强制它加载所有软件包的.net 4.5版本。这也使得EntityFramework加载的版本正确。