2012-11-12 163 views
6

我最近將我的解決方案從使用vs2010 pro sp1的主開發機器移至新機器。該設置應該是相同的,除了它沒有建立。構建錯誤,警告MSB3258

它給人這樣的錯誤

C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ Microsoft.Common.targets(1360,9):警告MSB3258:主要參考「C:\ rep \ hms \ trunk \ ikassystemv3 \ ikasDAL \ bin \ Debug \ ikasDAL.dll「無法解析,因爲它對.NET Framework程序集具有間接依賴性」mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089 「在當前目標框架中具有比版本」2.0.0.0「更高的版本」4.0.0.0「。

但是,所有有問題的庫都設置爲使用.net 2框架,我需要這樣做,否則它會打破使用它們的東西。

但由於某種原因,它似乎認爲我的.net 2系統庫以某種方式引用.net 4的東西。所有被引用的lib .NET 2

你可以看到我的生成輸出這裏

http://tinyurl.com/bnugru4

+0

與'ikasDAL.dll'有關的事情 – codingbiz

+1

'ikasDAL'是你的一個項目嗎?它提到了什麼? –

回答

2

我使用CopyLocal項目參考和改變目標框架時看到這個問題(即.NET 4到2)上的依賴項目(即ikasDAL.dll)。

如果是這種情況,刪除輸出文件夾(即C:\ rep \ hms \ trunk \ ikassystemv3 \ ikasDAL \ bin \ Debug)並重建應該修復整個事情。

+0

感謝您提供此信息,儘管它沒有直接幫助,但卻讓我朝着正確的方向前進。事實證明,我的DAL類lib引用了mysql.data.dll。出於某種原因,爲MySQL lib設置CopyLocal爲true使所有問題消失。 – Steed

+0

這可能是因爲你已經在你機器的全局程序集緩存中安裝了一個.NET 4.0目標版本的mysql.data.dll。 CopyLocal強制您的構建過程在bin文件夾中使用正確的構建過程。 – abto

0

從日誌看來,確實看起來像是有人在4.0中編寫了ikasDAL.dll,因爲它依賴於System.Xml.Linq等東西,而這些東西並不存在於2.0框架中。

從各方面來看,我都會說某人人爲地將ikasDAL.dll設置爲2.0,卻沒有意識到它依賴於什麼。如果是這種情況,那麼我認爲你有更大的問題。

或者,ikasDAL最近設置爲4.0,您已將其重置爲2.0,但未修復它的依賴關係。


我會開始通過手動清理所有的bin目錄(基本上刪除它們)。然後我會看看每個單獨的項目,以確保它確實設置爲2.0。最後,我會一次構建一個項目,直到遇到問題。