Подтвердить что ты не робот

Почему я получаю ошибки компиляции в новом проекте MVC4?

Мне не удалось найти ответ на этот вопрос, и все выходные проводили интернет, поэтому я надеялся, что вы могли бы помочь мне в этом.

При использовании Visual Studio 2012 я создаю новый проект веб-приложений MVC4 и получаю некоторые ошибки компиляции.

Вот моя проблема:

  • Я создаю новое веб-приложение MVC4 с помощью Visual Studio 2012, я выбираю интернет-приложение и устанавливаю его для использования механизма RAZOR.

  • Я перехожу к свойствам приложения и под вкладкой "Приложение" меняю Target Framework с .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\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 Не удалось найти имя типа или пространства имен "Сравнить" (вам не хватает директивы using или ссылки на сборку?) c:\users\saad\documents\visual studio 2012\Projects\MvcApplication1\MvcApplication1\Models\AccountModels.cs 87 10 MvcApplication1

4b9b3361

Ответ 1

Просто переустановите EntityFramework:

  • Перейдите в консоль диспетчера пакетов
  • Uninstall-Package entityframework
  • Установочный пакет-пакет

то есть ошибка должна исчезнуть!

Ответ 2

На самом деле это не проблема проекта MVC4, а изменение целевой .Net Framework.

Когда вы создаете новый проект MVC4 в VS2012, он будет (по умолчанию) ссылкой .Net 4.5. Все файлы создаются на основе этой версии. В AccountModel используются новые атрибуты из System.ComponentModel.DataAnnotations (TableAttribute, DatabaseGeneratedAttribute,...

Переустановка версии фреймворка только изменяет ссылки и не влияет на исходный код: атрибуты из рамки 4.5 не будут удалены.

Если вам нужен проект MVC4 с .Net 4.0, вы можете:

  • Удалены атрибуты .net 4.5 из AccountModel
  • Удалить учетную запись, если она не требуется
  • Выберите .NET 4.0 в мастере создания нового проекта.

Ответ 3

Решение для Entity Framework/Uninstall-Package entityframework/Install-Package не работает для меня. Вместо этого мне пришлось открыть файл .csproj в блокноте и выполнить поиск и заменить "net40" на "net45", чтобы заставить его загружать версию .net 4.5 всех пакетов. Это также сделало правильную версию загрузки EntityFramework.