我在 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 引用时,显示如下:
如您所见,顶部显示“目标:.NET Framework 2.0”,“版本”列表示我选择的是“2.0.0.0”版本。
但是,单击“确定”后,参考列表如下所示:
目标框架仍然是“.NETFramework,Version=v2.0”,但每个引用都表明正在使用版本“4.0.0.0”(以及该文件版本的公钥标记)。
然而,选择每个参考时的属性对话框绝对保持 v2.0 文件正在被使用。相信谁?该怎么办?