我有一個C++項目,它構建了一個面向框架3.5的.NET類庫。無法將.NET C++類庫從VS 2008遷移到VS 2012
該項目自年齡以來一直無縫工作,可以使用C#應用程序等。它是用Visual Studio 2008 Professional開發的。
現在我需要遷移到Visual Studio 2012 Professional。我已成功轉換該項目。
我遇到了第一個問題,即目標框架無法從項目通用屬性中更改,該字段是隻讀的。
我可以通過編輯.vcxproj文件來插入TargetedFramework標籤來解決這個問題。新版本確實出現在「通用屬性」中。
我也能夠添加引用到庫需要的.NET程序集(只是系統,System.Drawing和System.Windows.Forms)。類庫正確編譯爲一個Dll,我可以在對象瀏覽器中看到它的內容。
現在,如果我嘗試使用它在應用程序下4目標框架的版本,我得到的消息
1>C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.Targets(1605,5): warning MSB3258: The primary reference "MyClasses" 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.
我無法看到的間接引用可能來自(我明確提到了v2.0.50727,它似乎是2.0/3.0/3.5的文件版本)。
你有什麼解釋嗎?
針對.NET 4是VS2012的一個難題,鏈接器發佈程序集引用。如果你的目標是3.5,那麼你必須繼續使用VS2008。 –
這很奇怪。對於C#應用程序,您可以選擇從2.0到4.6的任何版本。你的意思是說這是VC++的限制嗎? –
完全由設計決定,C++/CLI需要在CRT中使用與AppDomain相關的膠合代碼,以確保非託管狀態被正確初始化,由模塊初始化器完成。該代碼總是生成對mscorlib和System的引用,VS2010的4.0版本以上,你不能希望它。 –