我有一个MonoTouch应用程序,当我为设备编译它时,我得到以下错误:
Error MT2002: Can not resolve reference: System.Boolean System.Type::op_Equality(System.Type,System.Type) (MT2002)它在模拟器中工作得很好,不过偶尔我会得到一个相同类型的MissingMethodException。
我没有第三方图书馆。所有的代码都是我自己的。有什么想法吗?
编辑这里是我的3个项目和他们的所有参考资料。
项目1: Mobile.Libraries
项目2: Mobile.Core
项目3: Mobile.IOS
发布于 2012-04-27 13:46:39
正如@Jonathan.Peppers所说,当您使用针对完整的.NET4配置文件构建的编译的 .dll时,就会发生这种情况。
MonoTouch基类库(BCM)提供了Silverlight配置文件(2.1)的超集,并添加了一些内容。因此,从另一个框架中添加预编译的二进制文件可能需要一些类型/方法,这些类型/方法是,而不是MonoTouch BCL中的。
解决方案是根据.dll附带的BCL程序集重新构建所有MonoTouch。这将确保编译器只使用可用的符号。
为什么要在iOS模拟器上工作?
那是因为JIT被使用了。因为它是及时编译的,所以您可能永远无法到达缺少的符号,所以它可以工作,直到您命中缺失的代码(并获得一个运行时错误)。
另一方面,当您使用设备(或链接器)时,将加载所有符号(并为AOT编译)。任何丢失的东西都会提前发现,所以你会得到一个像上面一样的构建时错误。
https://stackoverflow.com/questions/10344426
复制相似问题