Visual Studio 2012で、プロジェクト作成ページのフレームワークとして.NET 2.0を選択して、新しいC ++/CLIプロジェクトを作成しました。「外部依存関係」(mscorlib.dll、System.Data.dll、System.dll、およびSystem.XML.dll)が「パス」をとして表示することを確認しましたc:\Windows\Microsoft.NET\Framework\v2.0.50727\*
。
同じソリューションのC#.NET 2.0プロジェクトからこのプロジェクトへの参照を追加すると、ビルド時にコンパイラがC++ライブラリに対して次のエラーでリンクできなくなります。
警告2プライマリ参照"D:\ GIT \ EasyBCD \ Release \ Win32Interop.dll"は、.NET Frameworkアセンブリ"mscorlib、Version = 4.0.0.0、Culture = neutral、PublicKeyToken =に間接的に依存しているため、解決できませんでした。 b77a5c561934e089 "は、現在のターゲットフレームワークのバージョン"2.0.0.0"よりも高いバージョン"4.0.0.0"を持っています。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参照を再度追加しようとすると、次のように表示されます。
ご覧のとおり、上部に「Targeting:.NET Framework 2.0」と表示され、「Version」列はバージョン「2.0.0.0」を選択していることを示しています。
ただし、[OK]をクリックすると、参照リストは次のようになります。
ターゲットフレームワークは「.NETFramework、Version = v2.0」のままですが、個々の参照はそれぞれ、バージョン「4.0.0.0」が(そのバージョンのファイルの公開鍵トークンとともに)使用されていることを示しています。
ただし、各参照を選択するときのプロパティダイアログでは、v2.0ファイルが使用されていることが完全に維持されます。誰を信じますか?何をすべきか?