2012-09-30 46 views
13

我一直沒能找到答案,並且整個週末都在網上搜索,所以我希望也許你能幫我解決這個問題。爲什麼我在新的MVC4項目中遇到編譯錯誤?

當使用Visual Studio 2012時,我創建了一個新的MVC4 Web應用程序項目並獲得一些編譯錯誤。

這裏是我的問題:

  1. 我使用Visual Studio 2012創建一個新的MVC4 Web應用程序,我選擇互聯網應用程序並將其設置爲使用剃刀引擎。

  2. 我去申請性質及應用程序選項卡更改目標框架從.NET框架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' )使用指令或程序集引用?)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:\用戶\薩阿德\文件\的Visual Studio 2012 \項目\ MvcApplication1 \ MvcApplication1 \型號\ AccountModels.cs 25 10 MvcApplication1

    錯誤5中的類型或命名空間名稱 'CompareAttribute' 找不到(是否缺少)使用指令或程序集引用?)c:\ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels.cs 54 10 MvcApplication1

    錯誤6類型或命名空間名稱'Compare'可能找不到(您是否缺少使用指令或程序集引用?)c:\ users \ saad \ documents \ visual studio 2012 \ Projects \ MvcApplication1 \ MvcApplication1 \ Models \ AccountModels.cs 54 10 MvcApplication1

    錯誤7無法找到類型或名稱空間名稱'CompareAttribute'(您是否缺少使用指令或程序集引用?)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 \ \模型AccountModels。CS 87 10 MvcApplication1

+0

有關這方面的任何消息嗎? – Cybermaxs

回答

7

事實上,它不是MVC4模板項目的問題,但改變目標.NET框架。

當您在VS2012中創建一個新的MVC4項目時,它將(默認情況下)引用.Net 4.5。所有文件都基於此版本生成。該AccountModel使用新屬性從System.ComponentModel.DataAnnotationsTableAttributeDatabaseGeneratedAttribute,...

Retargetting框架版本只改變引用並不會影響源代碼:從4.5框架將不會被刪除屬性

如果你想有一個與.NET 4.0 MVC4謨,你可以:

  • 從AccountModel刪除.NET 4.5的屬性
  • 刪除AccountMode如果不需要
  • 在「創建新項目嚮導」中選擇.NET 4.0。
26

簡單地重新安裝的EntityFramework:

  1. 轉到包管理控制檯
  2. 卸載,包的EntityFramework
  3. 安裝,包裝的EntityFramework

就是它的錯誤應該走開!

+3

這應該被標記爲答案。 – vbocan

+1

+1標記爲答案,謝謝@Stacker分享,豎起大拇指! –

+0

請注意:程序包管理器控制檯命令似乎區分大小寫或挑剔。這個答案最初失敗了,直到我完全按照所示鍵入它。 – DeveloperDan

1

Uninstall-Package entityframework/Install-Package entityframework解決方案對我無效。相反,我必須在記事本中打開.csproj文件並執行查找並將「net40」替換爲「net45」,以強制它加載所有軟件包的.net 4.5版本。這也是EntityFramework加載的正確版本。

+0

爲我工作,謝謝 – Codename

相關問題