在Visual Studio 2012中为.NET C++ CLR支持的DLL项目降级.NET framework 4.5到4?

hea*_*ude 8 .net c++ frameworks visual-studio

我在链接Visual C#.NET framework 4.0支持的项目时遇到此错误,因为我在4.5 .NET Framework中添加了C++ CLR DLL的引用.

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

因此,如何在Visual Studio 2012中将.NET Framework 4.5降级为4.0以支持此C++ CLR支持的DLL项目?

我之前看到过这个原因.对于我的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". 
Run Code Online (Sandbox Code Playgroud)

有人见过这个吗?那么我如何降级C++ DLL呢?

谢谢

Han*_*ant 13

C++ IDE不支持.NET项目的多目标.您需要手动编辑.vcxproj.如果打开项目并在文本编辑器中打开.vcxproj,请关闭该项目.找到这一行:

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
Run Code Online (Sandbox Code Playgroud)

并将其修改为"v4.0".在VS中再次打开项目.项目+属性,公共属性,框架和参考.在列表中选择"系统",然后选中"相对路径"属性.它现在应该指向4.0版本.

请注意一个重要问题以及C++ IDE不支持多目标的核心原因.#using指令存在问题,它从c:\ windows\microsoft.net子目录加载程序集.这将使它加载.NET 4.5程序集而不是目标4.0时所需的4.0程序集.4.0参考程序集存储在c:\ program files\reference程序集中.这可能导致很难诊断运行时问题,4.5程序集与4.0程序集不兼容.很容易避免#using在您自己的代码中,但它在include/msclr/marshal.h和include/vcclr.h头文件中使用.如果你使用这些标题,请注意.