2013-07-22 40 views
15

我正在使用.NET 4.5構建ASP.NET Web窗體網站。類型定義存在於兩個庫中

錯誤...

The type 'System.ComponentModel.DataAnnotations.Schema.ForeignKeyAttribute' exists in both 'f:\Projects\web sites\RC1Iteration05\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll' and 'c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.ComponentModel.DataAnnotations.dll' 

我曾嘗試使用別名庫...

csc /r:EF_DataAnnotations="f:\Projects\web sites\RC1Iteration05\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll" /r:CM_DataAnnotations="c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.ComponentModel.DataAnnotations.dll" 

但這隻會導致「未指定源文件」,這是因爲同樣令人困惑源文件按指示指定(here & here)。

我確實注意到錯誤是引用net40文件夾中的EF dll而不是net45文件夾。我想,如果我使用net45版本的問題會自行解決,但我不知道如何更改該參考。我將「targetFramework」屬性更改爲packages.config文件中的EntityFramework軟件包,但這沒有任何區別。

我有點卡住了,因爲這兩個解決方案似乎都沒有做任何事情。

我環顧四周,發現了一些帖子,人們在這裏處理類似的問題,但沒有收到任何回覆。我希望有人可以幫助!

感謝

+0

'/ r'開關僅適用於實際編譯命令行內容的情況。 – SLaks

+0

所以我根本不做命令行。我認爲我正在編譯一個新的別名庫?如果不是,那麼試圖做什麼? –

+0

編號別名僅允許您在源文件中使用不同的名稱來引用引用的程序集。 – SLaks

回答

36

當你發現,你正在使用的.NET 4.5的.NET 4.0版本的實體框架。
這是行不通的。

從NuGet重新安裝EF,它應該工作正常。

+0

我正在使用SQL Server CE 4.0並安裝了一個使EF與CE一起使用的軟件包(問題的一部分)?儘管我在包列表中看不到它。當我去卸載EF軟件包時,由於依賴性問題(OAuth)而失敗。根據我的經驗,我發現卸載和重新安裝軟件包往往是一種屢試不爽的做法,經常會使我的項目不穩定,需要數小時來重新組裝它,甚至不得不從頭開始重新創建項目。是否有重新安裝軟件包的方法,不需要我「刪除」當前引用? –

+0

嘗試手動更改指向/ net45的引用。然而,重新安裝NuGet包不應該是一個麻煩的任務(儘管之後你可能想從源代碼控制中恢復'web.config')。這聽起來像你已經搞亂你的本地引用。如果你擺脫了所有的引用,並且只從NuGet重新安裝所有的東西,那麼你不應該有任何麻煩。 – SLaks

+0

我已經嘗試更改package.config中的值,但沒有奏效。是否有其他地方我應該尋找手動更改參考? –

6

其他選項並不適用於我。什麼工作進入\ packages \ EntityFramework.6.1.3 \ lib \並刪除net40目錄然後重建所有。

相關問題