6

Visual Studio 2012で新しいC++/CLIプロジェクトを作成しました。プロジェクト作成ページのフレームワークとして.NET 2.0を選択しました。私は "外部依存関係"(mscorlib.dll、System.Data.dll、System.dll、およびSystem.XML.dll)が "Path"を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は私に苦労しているのですか?謎は深まる

EDIT

。すべてを削除してからC++/CLIのプロジェクトでは、.NET参照を再度追加しようとすると、これは示して何です:それはターゲット」と言う上部に

Adding new dependency

あなたが見ることができるように、:.NET Frameworkの2.0 "を選択し、"バージョン "の列が" 2.0.0.0 "のバージョンを選択していることを示します。

ただし、[OK]をクリックすると、これは参照リストは次のようになります。ターゲットフレームワークは、」.NETFramework、バージョン= V2.0" が、個々の参照、それぞれがそのバージョンを示したまま

.NET dependency list

"4.0.0.0"が使用されています(そのバージョンのファイルの公開鍵トークンとともに)。

ただし、各参照を選択するときのプロパティダイアログでは、v2.0ファイルが使用されていることが絶対に維持されます。信じる人は誰ですか?何をすべきか?

+1

実行Ildasm.exeを仮定を検証するWin32Interop.dllアセンブリ上:ここでのMicrosoft Connectのリンクがあります。 –

+0

あなたは正しいです、それはv4を使用しています。しかし、私の更新された質問を参照してください - 私はそれが他のものを使用することはできません。 –

+0

それがどうやって間違っているか推測するのは非常に難しいです。あなたが誰かに見てもらいたい場合は、ファイルサービスにvcxprojファイルを投稿してください。 –

答えて

関連する問題