此错误的原因是 .NET 2.0(包括 Silverlight)和 4.0 之间的[Extension]
属性从移动System.Core.dll
到mscorlib.dll
.
Xamarin.iOS 6.2(及更早版本)基于 Silverlight 的超集(又名 2.1 配置文件)。所以[Extension]
属性位于System.Core.dll
.
自 Xamarin.iOS 6.3+ 以来,该产品重新基于 Mono 3.0 并且配置文件已更新为使用较新的 4.0/4.5 配置文件。现在该[Extension]
属性位于mscorlib.dll
.
在您的情况下,您有一个针对较新(4.0)配置文件编译的二进制程序集。该程序集具有mscorlib, Version=4.0.0.0, ...
要查找的引用,[Extension]
如果针对较旧的 Xamarin.iOS(6.2 和更早版本)构建,则会导致错误。
正如你所发现的,简单的解决方案是更新到最新的 Xamarin.iOS 版本。解决此问题(不更新 Xamarin.iOS)的另一种方法是根据 Xamarin.iOS 6.2 附带的程序集 (BCL) 重建项目的二进制程序集(如果您有源代码)。