.net 4.0 为什么在一个新的MVC4项目中会出现编译错误?

.net 4.0 为什么在一个新的MVC4项目中会出现编译错误?,.net-4.0,asp.net-mvc-4,visual-studio-2012,.net 4.0,Asp.net Mvc 4,Visual Studio 2012,我一直找不到答案,整个周末都在上网,所以我希望你能帮我解决这个问题 在使用Visual Studio 2012时,我创建了一个新的MVC4 Web应用程序项目,并出现了一些编译错误 我的问题是: 我使用Visual Studio 2012创建了一个新的MVC4 Web应用程序,我选择了Internet应用程序并将其设置为使用RAZOR引擎 我转到应用程序属性,在应用程序选项卡下,我将目标框架从.NET Framework 4.5更改为.NET Framework 4 生成生成生成以下错误: 错误

我一直找不到答案,整个周末都在上网,所以我希望你能帮我解决这个问题

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

我的问题是:

  • 我使用Visual Studio 2012创建了一个新的MVC4 Web应用程序,我选择了Internet应用程序并将其设置为使用RAZOR引擎

  • 我转到应用程序属性,在应用程序选项卡下,我将目标框架从.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\MVCAPApplication1\MVCAPApplication1\Models\AccountModels.cs 21 6 MVCAPApplication1

    错误2找不到类型或命名空间名称“Table”(是否缺少using指令或程序集引用?)

    错误3找不到类型或命名空间名称“DatabaseGeneratedAttributeAttribute”(是否缺少using指令或程序集引用?)c:\users\saad\documents\visual studio 2012\Projects\MVCAPApplication1\MVCAPApplication1\Models\AccountModels.cs 25 10 MVCAPApplication1

    错误4找不到类型名称“DatabaseGeneratedAttribute”。此类型已转发到程序集“System.ComponentModel.DataAnnotations,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”。考虑向该程序集添加引用。c:\users\saad\documents\visual studio 2012\Projects\MVCAPApplication1\MVCAPApplication1\Models\AccountModels.cs 25 10 MVCAPApplication1

    错误5找不到类型或命名空间名称“CompareAttribute”(是否缺少using指令或程序集引用?)

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

    错误7找不到类型或命名空间名称“CompareAttribute”(是否缺少using指令或程序集引用?)

    错误8找不到类型或命名空间名称“Compare”(是否缺少using指令或程序集引用?)c:\users\saad\documents\visual studio 2012\Projects\MVCAPApplication1\MVCAPApplication1\Models\AccountModels.cs 87 10 MVCAPApplication1


  • 事实上,这不是MVC4模板项目的问题,而是改变目标.Net框架的问题

    在VS2012中创建新的MVC4项目时,它(默认情况下)将引用.Net 4.5。所有文件均基于此版本生成。AccountModel使用来自
    System.ComponentModel.DataAnnotations
    TableAttribute
    DatabaseGeneratedAttribute

    重新确定框架版本的目标只会更改引用,不会影响源代码:不会删除4.5框架中的属性

    如果您想要使用.Net 4.0的MVC4 projet,您可以:

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

    只需重新安装EntityFramework:

  • 转到包管理器控制台
  • 卸载包entityframework
  • 安装包entityframework

  • 就是这样,错误应该消失了!

    卸载包entityframework/安装包entityframework解决方案对我不起作用。相反,我必须在记事本中打开.csproj文件,然后查找并将“net40”替换为“net45”强制它加载所有包的.net 4.5版本。这也使EntityFramework加载了正确的版本。

    有任何消息吗?+1将其标记为答案,感谢@Stacker的共享,竖起大拇指!注意:包管理器控制台命令似乎区分大小写或对间距很挑剔。这个答案最初对我来说是失败的,直到我按图所示准确键入。