为什么我在一个新的MVC4项目中会遇到编译错误?

13

我一直在网上搜索但未能找到答案,希望你能帮我解决这个问题:

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

我的问题如下:

  1. 我使用Visual Studio 2012创建一个新的MVC4 Web应用程序,选择Internet Application并将其设置为使用RAZOR Engine。

  2. 我打开应用程序属性,在应用程序选项卡下,将目标框架从.NET Framework 4.5更改为.NET Framework 4。

  3. 构建后出现以下错误:

    Error 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

    Error 2 找不到类型或命名空间名称“Table”(你是否缺少 using 指令或程序集引用?)c:\users\saad\documents\visual studio 2012\Projects\MvcApplication1\MvcApplication1\Models\AccountModels.cs 21 6 MvcApplication1

    Error 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 未找到类型或命名空间名称“Compare”(是否缺少了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


有关这个的任何消息吗? - Cybermaxs
3个回答

26

简单重新安装EntityFramework:

  1. 前往程序包管理器控制台
  2. 卸载 EntityFramework:Uninstall-Package entityframework
  3. 安装 EntityFramework:Install-Package entityframework

以上步骤完成后,错误应该已经消失了!


1
+1 标记为答案,感谢 @Stacker 的分享,点赞! - Sunny Sharma
注意:包管理器控制台命令似乎对大小写敏感或对空格挑剔。在我按照所示的方式精确输入之前,这个答案一开始对我失败了。 - DeveloperDan

7
实际上,这不是MVC4模板项目的问题,而是更改目标.NET Framework的问题。
当您在VS2012中创建新的MVC4项目时,默认情况下会引用.NET 4.5。所有文件都基于此版本生成。AccountModel使用来自System.ComponentModel.DataAnnotations的新属性(TableAttribute、DatabaseGeneratedAttribute等)。
重定向框架版本只会更改引用,不会影响源代码:4.5框架中的属性不会被删除。
如果您想要一个带有.NET 4.0的MVC4项目,可以:
- 从AccountModel中移除.NET 4.5属性 - 如果不需要AccountMode,则删除它 - 在“创建新项目向导”中选择.NET 4.0。

1
"

Uninstall-Package entityframework / Install-Package entityframework的方法对我无效。相反,我不得不在记事本中打开.csproj文件,并进行查找和替换“net40”为“net45”,以强制加载所有包的.net 4.5版本。这使得正确版本的EntityFramework也被加载。

"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接