编译时出现单点触控错误:System.Boolean System.Type::op_Equality(System.T

本文关键字:System op Type Equality Boolean 单点触 错误 编译 | 更新日期: 2023-09-27 18:32:35

我有一个MonoTouch应用程序,当我为设备编译它时,我收到以下错误:

Error MT2002: Can not resolve reference: System.Boolean System.Type::op_Equality(System.Type,System.Type) (MT2002)

它在模拟器中工作正常,但是偶尔我会得到相同类型的MissingMethodException

我没有第三方库。所有代码都是我自己的。有什么想法吗?

编辑 这是我的 3 个项目及其所有参考资料。

项目1:移动图书馆

  • 单点触控
  • 系统
  • 系统核心
  • System.Xml

项目2:移动核心

  • 移动图书馆
  • 系统
  • 系统核心
  • System.Xml

项目3:移动IOS

  • 单点触控
  • 移动核心
  • 系统
  • 系统核心
  • System.Xml

编译时出现单点触控错误:System.Boolean System.Type::op_Equality(System.T

就像 @Jonathan.Peppers 说当你使用针对完整构建的编译.dll时,就会发生这种情况。NET4,配置文件。

MonoTouch Base Class Library(BCM(提供了Silverlight配置文件(2.1(的超集,并增加了一些4.0。因此,从另一个框架添加预编译的二进制文件可能需要一些 MonoTouch BCL 中不存在的类型/方法。

解决方案是针对 MonoTouch 附带的 BCL 程序集重新生成所有.dll。这将确保编译器仅使用可用的符号。

为什么它可以在iOS模拟器上运行?

这是因为使用了 JIT。由于它是及时编译的,因此您可能永远无法到达丢失的符号,因此它可以工作,直到您遇到丢失的代码(并得到运行时错误(。

另一方面,当您使用设备(或链接器(时,将加载所有符号(并针对 AOT 进行编译(。任何缺失的内容都会提前被发现,因此您会收到类似上述的构建时错误。