2012-05-07 36 views
1

我使用類似於http://docs.xamarin.com/ios/tutorials/Working_with_Web_Services#Consuming_WCF_Services的Silverlight SLSvcUtil.exe工具在Monotouch上創建了一個WCF客戶端。iPhone硬件上的Monotouch/WCF錯誤

在模擬器一切工作正常,但是當我開始它在iPhone 4S我得到了錯誤:

試圖JIT編譯方法「(包裝的委託,開始-調用):begin_invoke_IAsyncResult_ __TimeSpan_AsyncCallback_object(系統.TimeSpan,System.AsyncCallback,object)',而使用--aot-only運行。

任何想法?

+0

謝謝!我剛剛解決了從Visual Studio項目複製服務引用並覆蓋服務和服務通道的問題,例如:http://stackoverflow.com/questions/10054581/monotouch-wcf-how-to-consume-the-wcf - 服務 - 無 - SvcUtil工具 –

回答

1

我已經從Monotouch調用了幾個wcf服務,但沒有遇到像這樣的任何問題 - 因此可以完成。

monitouch中的jit錯誤通常表明鏈接器已經刪除了某些東西,或者某些虛擬抽象方法已被調用(至少在我最近的經驗中)。

你可以檢查你真正的iPhone項目的鏈接器設置?如果你將它設置爲-nolink,問題就會消失 - 請參閱http://docs.xamarin.com/ios/advanced_topics/linker

如果這樣做有幫助,那麼下一步是在wcf生成的文件中查看 - 你能找到併發布一些關於回調的代碼方法在這種情況下?

0

這樣的問題很少與鏈接器相關,如果簽名是封裝,則更少。但是,您可以使用Stuart的說明輕鬆確認。

IMO您可能會遇到AOT編譯器無法預測所需代碼的情況。混合泛型和值類型時可能會發生這種情況(並且您在生成的簽名中有一個TimeSpan)。這將在模擬器(使用JIT的地方)上工作,但在AOT應用程序時不起作用。

解決此類問題的最佳方法是在http://bugzilla.xamarin.com處打開一個錯誤報告,並附上一個測試用例,以便我們複製該問題。