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

Com*_*33k 13 .net-4.0 asp.net-mvc-4 visual-studio-2012

我一直无法找到答案并且整个周末一直在网上搜索,所以我希望也许你可以帮我解决这个问题.

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

这是我的问题:

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

  2. 我转到Application Properties,在Application选项卡下,我将Target Framework从.NET Framework 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"(您是否缺少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找不到类型或命名空间名称"比较"(您是否缺少using指令或程序集引用?)c:\ users\saad\documents\visual studio 2012\Projects\MvcApplication1\MvcApplication1\Models\AccountModels. cs 87 10 MvcApplication1

Sta*_*ker 26

只需重新安装EntityFramework:

  1. 转到程序包管理器控制台
  2. 卸载 - 包实体框架
  3. Install-Package entityframework

这就是错误应该消失!


Cyb*_*axs 7

实际上,它不是MVC4模板项目的问题,而是改变目标.Net Framework.

在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".