2012-09-30 5 views
13

Nie byłem w stanie znaleźć odpowiedzi na to i przez cały weekend przeszukałem internet, więc miałem nadzieję, że możesz mi w tym pomóc.Dlaczego pojawiają się błędy kompilacji w nowym projekcie MVC4?

Podczas korzystania z Visual Studio 2012, tworzę nowy projekt aplikacji WWW MVC4 i otrzymuję błędy kompilacji.

Oto mój problem:

  1. utworzyć nową aplikację MVC4 Web przy użyciu programu Visual Studio 2012, wybiorę aplikacja internetowa i ustawić go używać RAZOR Engine.

  2. idę do właściwości aplikacyjne oraz w zakładce Application Framework zmienić docelową z .NET Framework 4.5 do .NET Framework 4.

  3. Build produkuje następujące błędy:

    Error 1 Nie można znaleźć nazwy typu "TableAttribute". Ten typ został przekazany do zestawu "System.ComponentModel.DataAnnotations, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 '. Rozważ dodanie odniesienia do tego zestawu. c: \ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels.cs 21 6 MvcApplication1

    Błąd 2 Nie można znaleźć nazwy typu lub przestrzeni nazw "Tabela" (czy brakuje stosując dyrektywę lub odwołania do zestawu) c: \ Users \ Saad \ Documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ modele \ AccountModels.cs 21 6 MvcApplication1

    błąd 3 Typ lub obszaru nazw 'DatabaseGeneratedAttributeAttribute' może nie można znaleźć (czy brakuje dyrektywy użycia lub odniesienia do zestawu?) c: \ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels.cs 25 10 MvcApplication1

    Błąd 4 Nie można znaleźć nazwy typu "DatabaseGeneratedAttribute". Ten typ został przekazany do zestawu "System.ComponentModel.DataAnnotations, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 '. Rozważ dodanie odniesienia do tego zestawu. c: \ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels.cs 25 10 MvcApplication1

    Błąd 5 Nie można znaleźć typu lub przestrzeni nazw "CompareAttribute" (czy brakuje za pomocą dyrektywy lub odwołania do zespołu?) c: \ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels.cs 54 10 MvcApplication1

    Błąd 6 Typ lub nazwa przestrzeni nazw "Porównaj" nie można znaleźć (czy brakuje dyrektywy użycia lub odniesienia do zespołu?) c: \ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels.cs 54 10 MvcApplication1

    Błąd 7 Nie można znaleźć nazwy typu ani przestrzeni nazw "PorównajAttribute" (czy brakuje jakiejś dyrektywy lub odwołania do zestawu?) C: \ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels .cs 87 10 MvcApplication1

    Błąd 8 Nie można znaleźć typu lub przestrzeni nazw "Porównaj" (czy brakuje jakiejś dyrektywy lub odwołania do zestawu?) c: \ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels.cs 87 10 MvcApplication1

+0

jakieś wiadomości na ten temat? – Cybermaxs

Odpowiedz

7

W rzeczywistości, to nie jest to problem z projektu szablonu MVC4 ale zmieniając cel .NET Framework.

Podczas tworzenia nowego projektu MVC4 w VS2012, będzie on (domyślnie) odwoływał się do .Net 4.5. Wszystkie pliki są generowane na podstawie tej wersji. AccountModel używać nowych atrybutów z System.ComponentModel.DataAnnotations (TableAttribute, DatabaseGeneratedAttribute ...

Retargetting wersję ramowego zmienić tylko referencje i nie wpływa na kod źródłowy. Atrybutów z 4,5 ram nie zostaną usunięte

Jeśli chcesz MVC4 projet z .NET 4.0, można:

  • Usunięto .net 4.5 atrybuty z AccountModel
  • Usuń AccountMode jeśli nie wymagają
  • Wybierz .NET 4.0 w Kreatorze tworzenia nowego projektu.
26

Wystarczy Ponownie EntityFramework:

  1. Przejdź do Pakiet konsoli Menedżer
  2. Uninstall-Package entityframework
  3. Install-Package entityframework

że jest to błąd powinien odejść!

+3

To powinno być oznaczone jako odpowiedź. – vbocan

+1

+1 Oznacz jako odpowiedź, dzięki @Stacker do udostępniania, Thumbs Up! –

+0

Uwaga: komendy konsoli menedżera pakietów wydają się być rozróżniane wielkości liter lub są wrażliwe na odstępy. Ta odpowiedź początkowo mi się nie powiodła, dopóki nie napisałem dokładnie tak, jak pokazano. – DeveloperDan

1

Rozwiązanie jednostki Uninstall-Package entityframework/Install-Package nie działało dla mnie. Zamiast tego musiałem otworzyć plik .csproj w notatniku i znaleźć i zamienić "net40" na "net45", aby zmusić go do załadowania wersji .net 4.5 wszystkich pakietów. Spowodowało to również poprawną wersję obciążenia EntityFramework.

+0

pracować dla mnie, dziękuję – Codename