ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

使用设备构建时,Monotouch在LINQ查询上崩溃

2019-11-02 10:05:13  阅读:190  来源: 互联网

标签:aot xamarin-ios linq iphone c


这是我得到的错误:

| mscorlib | |在仅使用–aot的情况下尝试JIT编译方法’System.Linq.OrderedEnumerable`1:GetEnumerator()’.

从我看过的内容来看,在这种情况下,编译器似乎未包含方法“ GetEnumerator”,这是因为LINQ需要该代码.确保编译器将其包括在内的正确做法是什么?

我在网上找到的几乎所有遇到此问题的人都摆脱了linq查询,并继续生活,但是当这样的事情突然出现时,我厌倦了重新编写代码.另外,我不确定到底是哪个linq查询引起了问题,并且我正在慢慢遍历代码并重新编写所有linq查询,直到找到它为止.

解决方法:

并没有真正缺少GetEnumerator方法-但是在进入设备之前它不是AOT版本的.因此,JIT正在尝试在设备上进行编译.现在由于Apple的限制,MonoTouch(或其他任何工具)无法在设备上进行JIT代码编码(但可以在不存在此类限制的模拟器上使用).

那么真正的错误是什么:AOT编译器无法预测(并为其编译代码)这种(通用)类型.

找到问题的一种诀窍(比重写每个LINQ代码更容易)是编译C#代码,然后对程序集进行ildasm.接下来查找使用哪种方法OrderedEnumerable`1(LINQ可以很容易地隐藏东西).

一旦找到,您可能需要重写该部分,但是在某些情况下,您可以通过明显地将需要该类型(用’1表示)来“帮助” AOT编译器.

标签:aot,xamarin-ios,linq,iphone,c
来源: https://codeday.me/bug/20191102/1990654.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有