【问题标题】:Why am I getting compilation errors in a new MVC4 project?为什么我在新的 MVC4 项目中出现编译错误?
【发布时间】:2012-09-21 19:50:15
【问题描述】:

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

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

这是我的问题:

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

  2. 我转到应用程序属性并在应用程序选项卡下将目标框架从 .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 找不到类型或命名空间名称“表”(您是否缺少 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

【问题讨论】:

  • 有这方面的消息吗?

标签: .net-4.0 asp.net-mvc-4 visual-studio-2012


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    只需重新安装 EntityFramework:

    1. 转到包管理器控制台
    2. 卸载包实体框架
    3. 安装包实体框架

    那就是错误应该消失!

    【讨论】:

    • +1 标记为答案,感谢@Stacker 分享,点赞!
    • 当心:包管理器控制台命令似乎区分大小写或对间距很挑剔。这个答案最初对我来说是失败的,直到我完全按照所示输入。
    【解决方案3】:

    其实不是MVC4模板项目的问题,而是目标.Net Framework的问题。

    当您在 VS2012 中创建新的 MVC4 项目时,它将(默认)引用 .Net 4.5。所有文件均基于此版本生成。 AccountModel 使用来自System.ComponentModel.DataAnnotations 的新属性(TableAttributeDatabaseGeneratedAttribute、...

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

    如果您想要一个带有 .Net 4.0 的 MVC4 项目,您可以:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-14
      • 2014-06-08
      • 2016-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      相关资源
      最近更新 更多