新的.NET 2.0 C++/CLI项目是否隐含依赖于mscorlib v4?

Mah*_*dsi 6 .net interop c++-cli .net-framework-version visual-studio-2012

我在Visual Studio 2012中创建了一个新的C++/CLI项目,并在项目创建页面上选择了.NET 2.0作为框架.我已验证"外部依赖项"(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"其当前目标框架中的版本"4.0.0.0"高于版本"2.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".

但是,单击"确定"后,这就是引用列表的样子:

.NET依赖列表

Targeted框架仍为".NETFramework,Version = v2.0",但各个引用均表示正在使用版本"4.0.0.0"(以及该版本文件的公钥标记).

然而,选择每个引用时的属性对话框绝对保持正在使用v2.0文件.谁相信?该怎么办?

sno*_*ude 6

似乎不支持创建.NET 2.0 CLR项目.这是Microsoft Connect上的链接:

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#标签

  • 正确,但需要注意的是它不支持.NET 2.0**C++**项目. (2认同)