6

我在Visual Studio 2012中創建了一個新的C++/CLI項目,.NET 2.0被選爲項目創建頁面上的框架。我已驗證「外部依賴項」(mscorlib.dll,System.Data.dll,System.dll和System.XML.dll)顯示「路徑」爲c:\Windows\Microsoft.NET\Framework\v2.0.50727\*新的.NET 2.0 C++/CLI項目對mscorlib v4具有隱式依賴性?

在添加引用來自具有相同的溶液C#.NET 2.0的項目這個項目,在構建時,編譯器不能對我的C++庫,出現以下錯誤鏈接:

Warning 2 The primary reference "D:\GIT\EasyBCD\Release\Win32Interop.dll" could not be resolved because it has an indirect dependency on the .NET Framework assembly "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which has a higher version "4.0.0.0" than the version "2.0.0.0" in the current target framework. C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.Targets 1578

然而,像我說,'Win32Interop'項目中的參考清楚地表明使用了v2.0,並且項目文件本身包含<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>,因爲它應該。

爲什麼Visual Studio 2012給了我這麼難的時間?

編輯

神祕加深。當試圖刪除所有,然後在C++/CLI項目重新添加.NET引用,這是表示:

Adding new dependency

正如你所看到的,在上面它說:「定位:.NET框架2.0「和」版本「列表示我選擇了版本」2.0.0.0「。

然而,當點擊OK,這是引用列表中的樣子:

.NET dependency list

目標框架仍然是」 .NETFramework,版本= V2.0" 但個別引用分別表示該版本正在使用「4.0.0.0」(以及該文件版本的公鑰標記)。

然而,選擇每個引用時的屬性對話框絕對保證正在使用v2.0文件。誰相信?該怎麼辦?

+1

運行程序Ildasm.exe。 – 2013-02-14 23:37:35

+0

你是對的,它正在使用v4。不過,請參閱我更新的問題 - 我無法使用其他任何東西。 – 2013-02-14 23:49:45

+0

很難猜出這可能會出錯。如果你想讓別人看看它,請將你的vcxproj文件發佈到文件服務上。 – 2013-02-15 00:41:57

回答