2017年2月23日

解決無法參考不同版本EntityFramework

Problem

我的專案目標是.net 4.5,因此EntityFrameword 5也是使用4.5版,若使用編譯目標使用.net framework 4.0版,Compile後就會收到以下錯誤:

錯誤    3    '…\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll' 和 'c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.ComponentModel.DataAnnotations.dll' 兩者中都有型別 'System.ComponentModel.DataAnnotations.Schema.ColumnAttribute'    …….\Entity\UserContext.cs   
可是這是一個奇異現象:
因原本的專案是參考EntityFrameword 5的.net 4.5版本, 版本號理應是5.0.0.0 ,但怎會
image

Why

後來回想最近系統有作何更新,是有加裝了.net 4.6,猜想可能這導致專案參考EntityFramework 5 的版本變成4.4.0.0 (或許是兩版一起加, 刪除又加入造成錯亂)。
image
這時直覺想,把4.4版刪除加上5.0應該就沒問題了,但是加入5.0後,屬性仍會變成4.4參考,實在非常奇怪。

Solution

打開我們的.proj專案檔,發現有4.0和4.5版的TAG
image
猜想可能之前某個事件,導致4.0版的TAG有重複存在xml裡,於是執行以下解決步驟:
1. 把以上.proj專案檔裡的Entityframwork字樣的TAG都刪除,然後存檔
2. 再次加入4.5版的framework 5 參考
竟然就正常了,終於解決了這奇怪的問題。

注意事項

執行前請先將Proj檔存檔,以免錯誤時可以Rollback。

沒有留言:

張貼留言