我正在尝试在单项目项目中使用 DotNetZip (http://dotnetzip.codeplex.com/)。
我已经为 monotouch 重新编译了它,在MonoDevelop下创建了两个新的monotouch项目(一个用于ZLib,另一个用于DotNetZip),将代码放入其中,删除引用Windows Forms的代码,并在项目选项中设置编译目标 = 库。
在编译之前,我将MonoDevelop中的活动配置设置为“Release - iPhone”。
然后,我在主要的monotouch项目中引用了生成的DLL。
在模拟器中运行时工作正常,但是当我尝试在实际设备上调试它时(在我的情况下是iPod Touch 4),我在运行时遇到错误:
抛出了System.ExecutionEngineException
在使用--aot-only运行时尝试JIT编译方法'Vortaro.SearchTableViewSource:.ctor(Vortaro.SearchViewController)'。
这就发生在这一行:
using (ZipFile zip = ZipFile.Read ("dictionary.zip")) {
-
我还测试了一个简单的例子,只有在点击一个按钮时才这样做:
ZipFile.Read ("dictionary.zip");
我收到此错误:
未处理的异常:System.ExecutionEngineException: 在使用--aot-only运行时尝试JIT编译方法'Ionic.Zip.ZipContainer:.ctor(object)'。
在
当我查看错误指向的构造函数时,我看不到任何可能导致JIT编译的内容:public ZipContainer(Object o)
{
_zf = (o as ZipFile);
_zos = (o as ZipOutputStream);
_zis = (o as ZipInputStream);
}
答案 0 :(得分:1)
这是iOS强加的限制:无法在deman上生成代码。所以你需要解决的问题是为什么你的代码试图JIT编译Vortaro.SearchTableViewSource.ctor,这可能是因为你有一个使用它的泛型类型,或者你正在调用Type.GetType()< / p>
该错误看起来不像来自dotnetzip库,而是看起来它来自您的代码(请参阅类型名称)