繁体   English   中英

HttpClient执行运行时错误:ExecutionEngineException-尝试使用--aot-only进行JIT编译方法

[英]HttpClient execution runtime error: ExecutionEngineException - Attempting to JIT compile method with --aot-only

我使用的Xamarin(MAC)已安装iOS 6.4.4更新。 我的touch项目使用启用了HttpClient的PCL库。 每次我执行使用HttpClient的方法时,都会出现以下运行时错误:

System.ExecutionEngineException: Attempting to JIT compile method '(wrapper delegate-invoke) <Module>:invoke_void__this___HttpWebRequest_long (System.Net.HttpWebRequest,long)' while running with --aot-only. See http://docs.xamarin.com/ios/about/limitations for more information.

  at System.Lightup.Call[HttpWebRequest,Int64] (System.Delegate& storage, System.Net.HttpWebRequest instance, System.String methodName, Int64 parameter) [0x00000] in <filename unknown>:0 
  at System.Lightup.Set[HttpWebRequest,Int64] (System.Delegate& storage, System.Net.HttpWebRequest instance, System.String propertyName, Int64 value) [0x00000] in <filename unknown>:0 
  at System.Net.HttpWebRequestLightup.SetContentLength (System.Net.HttpWebRequest instance, Int64 value) [0x00000] in <filename unknown>:0 
  at System.Net.Http.HttpWebRequest.set_ContentLength (Int64 value) [0x00000] in <filename unknown>:0 
  at System.Net.Http.HttpClientHandler.StartRequest (System.Object obj) [0x00000] in <filename unknown>:0

我该如何解决该问题?

我知道我快迟了3年:),但今天我遇到了这个问题。 现在支持PCL,因此我认为向该问题添加一些其他信息可能会有所帮助。

如果您在PCL项目中引用System.Net.Http,例如通过使用Microsoft.Net.Http NuGet包,则必须将该引用也添加到iOS项目中。 您只需在iOS项目中安装此NuGet软件包即可完成此操作。

这将迫使iOS项目使用System.Net.Http dll的Mono iOS版本而不是PCL的变体,后者可能是net45或类似的东西。

我认为发生此问题是因为System.Net.Http的net45变体使用反射来调用某些方法。 请注意,该错误指出尝试了某些调用,并且这需要JIT编译。 但是,这是在iOS物理设备上禁止的,而不是在iOS模拟器上禁止的。 iOS物理设备需要提前编译。

Attempting to JIT compile method '(wrapper delegate-invoke) <Module>:invoke_callvirt_void_HttpWebRequest_bool (System.Net.HttpWebRequest,bool)'

PCL仍然不受官方支持。 特别是在涉及异步/等待时。 同时,您可以解释为什么我会创建一个平台特定的类库并将您的源文件添加为链接(如果您将ALT文件从Windows资源管理器中ALT拖动到VS解决方案资源管理器中,并且Xamarin Studio自动提供了链接选项,Visual Studio会这样做当它看到目标项目之外的源文件时)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM