2012-09-30 30 views
13

我一直没能找到答案,并且整个周末都在网上搜索,所以我希望也许你能帮我解决这个问题。为什么我在新的MVC4项目中遇到编译错误?

当使用Visual Studio 2012时,我创建了一个新的MVC4 Web应用程序项目并获得一些编译错误。

这里是我的问题:

  1. 我使用Visual Studio 2012创建一个新的MVC4 Web应用程序,我选择互联网应用程序并将其设置为使用剃刀引擎。

  2. 我去申请性质及应用程序选项卡更改目标框架从.NET框架4.5到.NET Framework 4的

  3. 构建产生了以下错误:

    错误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' )使用指令或程序集引用?)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:\用户\萨阿德\文件\的Visual Studio 2012 \项目\ MvcApplication1 \ MvcApplication1 \型号\ AccountModels.cs 25 10 MvcApplication1

    错误5中的类型或命名空间名称 'CompareAttribute' 找不到(是否缺少)使用指令或程序集引用?)c:\ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels.cs 54 10 MvcApplication1

    错误6类型或命名空间名称'Compare'可能找不到(您是否缺少使用指令或程序集引用?)c:\ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels.cs 54 10 MvcApplication1

    错误7无法找到类型或名称空间名称'CompareAttribute'(您是否缺少使用指令或程序集引用?)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 \ \模型AccountModels。CS 87 10 MvcApplication1

+0

有关这方面的任何消息吗? – Cybermaxs

回答

7

事实上,它不是MVC4模板项目的问题,但改变目标.NET框架。

当您在VS2012中创建一个新的MVC4项目时,它将(默认情况下)引用.Net 4.5。所有文件都基于此版本生成。该AccountModel使用新属性从System.ComponentModel.DataAnnotationsTableAttributeDatabaseGeneratedAttribute,...

Retargetting框架版本只改变引用并不会影响源代码:从4.5框架将不会被删除属性

如果你想有一个与.NET 4.0 MVC4谟,你可以:

  • 从AccountModel删除.NET 4.5的属性
  • 删除AccountMode如果不需要
  • 在“创建新项目向导”中选择.NET 4.0。
26

简单地重新安装的EntityFramework:

  1. 转到包管理控制台
  2. 卸载,包的EntityFramework
  3. 安装,包装的EntityFramework

就是它的错误应该走开!

+3

这应该被标记为答案。 – vbocan

+1

+1标记为答案,谢谢@Stacker分享,竖起大拇指! –

+0

请注意:程序包管理器控制台命令似乎区分大小写或挑剔。这个答案最初失败了,直到我完全按照所示键入它。 – DeveloperDan

1

Uninstall-Package entityframework/Install-Package entityframework解决方案对我无效。相反,我必须在记事本中打开.csproj文件并执行查找并将“net40”替换为“net45”,以强制它加载所有软件包的.net 4.5版本。这也是EntityFramework加载的正确版本。

+0

为我工作,谢谢 – Codename

相关问题