8

C ++CLRDLLの参照を4.5.NETFrameworkに追加したため、Visual C#.NETFramework4.0でサポートされているプロジェクトをリンクするとこのエラーが発生します。

error CS0246: The type or namespace name 'project' could not be found (are you missing a using directive or an assembly reference?)

その結果、このC ++CLRでサポートされているDLLプロジェクトのVisualStudio2012で.NETFramework4.5を4.0にダウングレードするにはどうすればよいですか?

私はこれを以前に見たことがあり、それが原因でした。私のC++の場合、このリンクは私の原因に役立つ可能性がありますhttp://msdn.microsoft.com/en-us/library/bb772098(v=vs.90).aspx

私もこの警告を発見しました:

 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1578,5): warning MSB3274: The primary reference "X" could not be resolved because it was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0". 

これを見た人はいますか?では、C ++ DLLをダウングレードするにはどうすればよいですか?

ありがとう

4

3 に答える 3

13

C ++ IDEは、.NETプロジェクトのマルチターゲティングをサポートしていません。.vcxprojを手動で編集する必要があります。プロジェクトを開いている場合は閉じて、テキストエディタで.vcxprojを開きます。この行を見つけます:

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>

「v4.0」に変更します。VSでプロジェクトを再度開きます。プロジェクト+プロパティ、共通プロパティ、フレームワーク、および参照。リストから「システム」を選択し、RelativePathプロパティを確認します。これで、4.0バージョンを指すはずです。

重要な問題と、C++IDEがマルチターゲティングをサポートしていない主な理由に注意してください。#usingディレクティブに問題があり、c:\ windows\microsoft.netサブディレクトリからアセンブリをロードします。これにより、4.0をターゲットとするときに必要な4.0アセンブリではなく、.NET4.5アセンブリがロードされます。4.0参照アセンブリはc:\ program files\referenceアセンブリに保存されます。これにより、ランタイムの問題を診断するのが非常に困難になる可能性があります。4.5アセンブリは4.0アセンブリとそれほど互換性がありません。独自のコードで#usingを回避するのは簡単ですが、include / msclr/marshal.hおよびinclude/vcclr.hヘッダーファイルで使用されます。これらのヘッダーを使用する場合は、エンプターに警告してください。

于 2013-02-08T08:59:58.737 に答える
2

私はそれを理解しました。警告でしたが、指定されたリンクで問題が解決しました。

http://msdn.microsoft.com/en-us/library/bb772098(v=vs.90).aspx

于 2013-02-08T07:17:04.560 に答える