iphone - 运行 montouch 应用程序时的 JIT/AOT 问题

标签 iphone ios mono xamarin.ios jit

几周来我一直在开发单点触控 opengl iphone 游戏。就在昨天,它还在我的测试硬件(iPhone 4)上正常构建和运行。但是当我昨天加载项目时,它给了我编译错误:

Framework 'Mono for iPhone' not Installed.

我想不出任何原因,我没有更改我的系统或源代码。幸运的是 Monodevelop 已经用最新的 api 下载的下载链接来骚扰我。我安装了,错误消失了。但是相反,我现在在应用程序启动时收到运行时错误 http://screencast.com/t/EXyNqqhNoEsu :

System.ExecutionEngineException has been thrown. Attempting to JIT compile method ... FirstOrDefault ... while running with --aot-only. 

这发生在尝试创建新的 DataContractSerializer 以加载一些 XML 设置时:http://screencast.com/t/4SDzU5ygg

这迫使我第一次更改应用程序项目选项下的链接器行为设置。它被设置为“不链接”,一如既往。当我切换到“仅链接 SDK 程序集”时,它运行时没有上述异常。

这太棒了,问题解决了,除了在这种模式下编译和部署到手机需要将近半小时(!)。构建输出位于“Linking SDK only for assembly...”。这是正常的吗?我不认为我可以在构建时间那么长的情况下保持理智。即使是“不链接”也需要大约五分钟的时间,这在您尝试进行故障排除时是一个令人精疲力尽的速度。

重申一下,这是几个星期以来每天都在工作的代码,据我所知,它的工作状态并没有改变。有谁知道为什么现在会出现此错误,以及继续使用“不链接”选项的解决方案是什么?

最佳答案

Framework 'Mono for iPhone' not Installed.

出于某种原因,MonoDevelop 无法找到您的 MonoTouch 安装。我不能说为什么,但重新启动 MonoDevelop 并检查 SDK Locations 的 MD 首选项(如果找不到 MonoTouch 则修复路径)将是尝试的最佳选择。

System.ExecutionEngineException has been thrown. Attempting to JIT compile method ... FirstOrDefault ... while running with --aot-only.

MonoTouch 4.2[.1] 有时会在选择“不链接”链接器选项时抛出 ExecutionEngineException。这bug已修复并将成为 MonoTouch future 版本的一部分。

FWIW Link SDK 程序集 是默认设置,应始终用于设备构建。链接器将生成小得多的应用程序,并且在大多数情况下它还允许更快构建(因为链接器可以节省 100kb 的速度比 AOT 编译器处理 100kb 的速度快)。 p>

如果您遇到链接器花费很长时间的情况,那么您的项目中就会出现错误(或至少很奇怪)。请花时间在 http://bugzilla.xamarin.com 填写错误报告这样我们就可以调查为什么需要这么长时间。

关于iphone - 运行 montouch 应用程序时的 JIT/AOT 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7548430/

相关文章:

javascript - 在 iPhone 5s 上的 iOS 9 上网站崩溃/无法加载

ios - 从 Alamofire 捕获数据

ios - UIButton 单击导致应用程序卡住/内存快速增加

iphone - MonoTouch 是否需要 Mac 才能发布到 iPhone/iPod Touch?

c# - 尝试 "fix"LuaInterface 时出现 DllNotFoundException,但为什么呢?

iphone - 如何在 ios4 中通过文本输入获取警报 View

iphone - 确保可拖动的 ImageView 保持在框架的边界内

iphone - 在 UIImage 上创建褪色的角/边(不是动画)

iphone - 是否可以增加一个字母,即在 Objective-C 中 A + 1 = B?

c# - 使用 C# 进行多平台开发