尝试在iPhone 5上调试应用程序时,Xamarin iOS出现错误。

3

当我们尝试在设备上(iPhone 5)调试应用程序时,会出现错误:

MT2002:无法解析“System.Linq.Expressions.BlockExpression System.Linq.Expressions.Expression::Block(System.Type,System.Collections.Generic.IEnumerable`1)”

这个bug被标记为已解决,但并不能帮助我们。

https://bugzilla.xamarin.com/show_bug.cgi?id=14765

2个回答

3

如果您使用甚至是间接使用System.Linq.Expressions(SLE),需要考虑以下几点:

  1. 这需要代码生成,而在iOS上不可能实现。这个功能在Xamarin.iOS上不被支持。SLE是动态语言运行时(DLR)的一部分;

  2. 有一个解释器提供了对SLE的部分支持。它已经随Xamarin.iOS一同发布很长时间了-但它仅提供了子集的功能。不幸的是,现有的API与MS使用的API不完全相同,并且它可以在构建时引起问题(例如使用PCL程序集)。这就是为什么您会得到那些MT2002错误(您的程序集试图覆盖不存在的成员)。

  3. Xamarin.iOS的维护版本(7.2.1+)包括一个更好(更多功能)且API兼容的SLE解释器。


1

您需要更改导致此问题的Linq语句。我曾经遇到过这个问题(我正在使用第三方DB),不幸的是实际设备不支持JIT,但模拟器支持。以不同的方式执行您的Linq语句。


你是否已经修改了所有类似这样的Linq语句:return persistFacilities.Select(f => f.ToCore(facility));?谢谢你的回复。 - gustavomcastro
普通的选择语句可以工作。我认为让它出错的是对 ToCore 的调用。我会使用普通的 for 循环来代替 select 语句。 - P. Sami

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接