6

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]をクリックすると、参照リストは次のようになります。

.NET依存関係リスト

ターゲットフレームワークは「.NETFramework、Version = v2.0」のままですが、個々の参照はそれぞれ、バージョン「4.0.0.0」が(そのバージョンのファイルの公開鍵トークンとともに)使用されていることを示しています。

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

4

1 に答える 1

6

.NET2.0CLRプロジェクトの作成はサポートされていないようです。MicrosoftConnectのリンクは次のとおりです。

https://connect.microsoft.com/VisualStudio/feedback/details/780602/compiling-c-clr-dll-in-vs-2012-targeting-net-2-0-introduces-indirect-dependency-on-net- 4-0#tabs

于 2013-03-22T09:38:34.483 に答える