编译时出现单点触控错误: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
就像 @Jonathan.Peppers 说当你使用针对完整构建的编译.dll时,就会发生这种情况。NET4,配置文件。
MonoTouch Base Class Library(BCM(提供了Silverlight配置文件(2.1(的超集,并增加了一些4.0。因此,从另一个框架添加预编译的二进制文件可能需要一些 MonoTouch BCL 中不存在的类型/方法。
解决方案是针对 MonoTouch 附带的 BCL 程序集重新生成所有.dll。这将确保编译器仅使用可用的符号。
为什么它可以在iOS模拟器上运行?
这是因为使用了 JIT。由于它是及时编译的,因此您可能永远无法到达丢失的符号,因此它可以工作,直到您遇到丢失的代码(并得到运行时错误(。
另一方面,当您使用设备(或链接器(时,将加载所有符号(并针对 AOT 进行编译(。任何缺失的内容都会提前被发现,因此您会收到类似上述的构建时错误。