Xamarin:错误 MT2002:无法解析 "System.Void System.Security.Cryptography.SHA1Cng::.ctor()"

Xamarin: Error MT2002: Failed to resolve "System.Void System.Security.Cryptography.SHA1Cng::.ctor()"

我在为 iOS.
构建 Xamarin 解决方案时遇到此错误 我只启用了 link SDK 程序集
奇怪的是,当我为模拟器构建它时它工作得很好,但是当我为真实设备构建它时却出现了这个错误。

MTOUCH: error MT2002: Failed to resolve "System.Void 
System.Security.Cryptography.SHA1Cng::.ctor()" reference from 
"System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

我的代码中没有提到 System.Security.Cryptography。

当我 禁用 link 程序集 启用 link 所有程序集 时它起作用,但是 linking all 将导致 Unity IoC 失败并禁用 linking all together 导致应用程序的文件大小更大。

我正在为 .NET 版本 4.5.2 构建目标 OS 7.1(当我更改它时没有区别)并且安装了 Xamarin 的所有更新。

更新:
我可以确认我的 iOS 项目指的是 System.Core 版本 2.0.5.0
请参阅下面的屏幕截图。
但是,我确实有一个 PCL 项目被引用。这会以某种方式导致问题吗?

更新: 结果是我引用了一个库,HashLib,我认为它是 PCL 但实际上不是。
在 HashLib 中有一个调用 System.Core 中的东西导致 linker 失败。
我现在已经从 HashLib 中提取了我需要的功能并将其编译到一个单独的 PCL 项目中,这解决了我的 linker 问题。

您以某种方式引用了 System.Core 的桌面版本:

"System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

Xamarin.iOS版本有Version=2.0.5.0.

请注意,您可能不会自己引用此版本的 System.Core,它可以间接拉入(如果您引用引用了 System.Core 的程序集)。

确认您所有的引用都使用 2.0.5.0 版本的 System.Core(我相信您可以为此使用 Reflector)。