8

链接 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 框架 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?

谢谢

4

3 回答 3

13

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

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>

并将其修改为“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 头文件中使用。如果您使用这些标题,请注意购买者。

于 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 回答
0

对我有用的是:在项目属性-> 配置属性-> 项目默认值中。.NET 目标框架版本 - 编辑为您需要的版本 - 在我的例子中是 4.6.1

于 2018-05-30T07:08:53.710 回答