'System.Runtime.InteropServices.SafeHandle' 类型存在于 'System.Runtime.InteropServices.dll' 和 'System.Runtime.Handles.dll' 中

The type 'System.Runtime.InteropServices.SafeHandle' exists in both 'System.Runtime.InteropServices.dll' and 'System.Runtime.Handles.dll'

我目前正在将 Windows 8.1 应用程序移植到 Windows 10 UAP 应用程序,该应用程序使用互操作在 C++ 和 C# 之间进行通信,并且弹出以下错误:

$(ProjectName).Interop.g.cs : error CS0433: The type 'System.Runtime.InteropServices.SafeHandle' exists in both 'c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETCore\v4.5.1\System.Runtime.InteropServices.dll' and 'c:\Program Files (x86)\MSBuild\Microsoft.NetNative\x86\ilc\lib\McgDependencies\System.Runtime.Handles.dll'

据我了解,System.Runtime.Handler 只是 System.Runtime.InteropServices 的一小部分(或至少包含其中的一小部分)。

这两个dll总是被编译器引用,所以无法删除它们。

我在我的解决方案中检查了 SafeHandle 类型,它没有在生成的文件 $(ProjectName).Interop.g.cs 以外的任何地方使用。我检查了我的解决方案中所有项目的引用,none 引用了错误中提到的两个 dll 中的任何一个。

当我单独构建它们时,每个项目都构建得很好...只有启动项目失败并出现此错误。

如有任何帮助,我们将不胜感激!

非常感谢!

我终于找到了解决问题的方法。这并不容易找到,但我做到了!由于我的解决方案非常适合我的项目,因此我将 post 我用来解决它的步骤。希望对大家有所帮助!

  1. 我卸载了我的启动项目并创建了一个新的空项目。
  2. 我一个一个地把需要的引用添加到空项目中(从依赖较少的那个开始)直到报错,这就给了我有问题的项目。
  3. 我尝试删除该项目的一些引用,一次一个,直到解决方案正在编译!

我发现 Windows 8 的 FlurrySDK 在 Windows 10 中引起了问题,所以我禁用它直到他们发布 Windows 10 版本!

希望这对某人有所帮助!