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

Ruu*_*ier 10 xamarin.ios ios xamarin

我在构建适用于iOS的Xamarin解决方案时遇到此错误.
我只启用了链接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"
Run Code Online (Sandbox Code Playgroud)

在我的代码中没有我引用System.Security.Cryptography.

当我禁用链接程序集启用链接所有程序集时,它可以工作,但链接all将导致Unity IoC失败并禁用所有链接,从而导致应用程序的文件大小更大.

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

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

在此输入图像描述

更新: 原来有一个我正在引用的库,HashLib,我认为它是PCL,但实际上并非如此.
在HashLib中,对System.Core中的某些内容进行了调用,导致链接器失败.
我现在从HashLib中提取了我需要的功能,并将其编译成一个单独的PCL项目,这解决了我的链接器问题.

Rol*_*nge 7

您以某种方式引用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).