6

我在 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”版本。

但是,单击“确定”后,参考列表如下所示:

.NET 依赖项列表

目标框架仍然是“.NETFramework,Version=v2.0”,但每个引用都表明正在使用版本“4.0.0.0”(以及该文件版本的公钥标记)。

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

4

1 回答 1

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

于 2013-03-22T09:38:34.483 回答