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

标签 c++ .net visual-studio frameworks

链接 Visual C# .NET Framework 4.0 支持的项目时出现此错误,因为我添加了 C++ CLR DLL 与 4.5 .NET Framework 的引用。

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 项目,我如何在 Visual Studio 2012 中将 .NET Framework 4.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?

谢谢

最佳答案

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

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>

并将其修改为“v4.0”。在 VS 中再次打开项目。项目 + 属性、通用属性、框架和引用。在列表中选择“系统”并检查相对路径属性。它现在应该指向 4.0 版本。

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

关于c++ - 在 Visual Studio 2012 中为 C++ CLR 支持的 DLL 项目将 .NET Framework 4.5 降级到 4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14766957/

相关文章:

c++ - C++中的递归(生成二进制代码)

c++ - 将数据发送到另一个 C++ 程序

.net - Environment.TickCount 是否受系统时间调整影响?

visual-studio - 在 visual studio 2012 团队资源管理器中缺少 "Detect changes"链接

android - xamarin 项目 MS VS 2015 中的 android 模拟器问题

c# - 从联机 checkin TFS 中排除文件夹

php - Qt/c++相当于php例程

asp.net - 使用代码 GZipping 进行 IIS 压缩?

.net - 通过 App.config 为 System.Net.HttpWebRequest 指定 SSL/TLS

c++ - =delete 函数的继承