繼Xamarin和Xcode升級到iOS 10更新/發行版後,我的應用程序在啓動時失敗。該應用程序甚至從來沒有進入App.cs構造函數供我開始調試。Xamarin和Xcode更新到iOS 10並且「在執行本機代碼時得到了SIGABRT ...」
實際錯誤消息:「在執行本機代碼有一個SIGABRT這通常表示在單聲道運行時或應用程序所使用的本機庫中的一個致命錯誤」
繼Xamarin和Xcode升級到iOS 10更新/發行版後,我的應用程序在啓動時失敗。該應用程序甚至從來沒有進入App.cs構造函數供我開始調試。Xamarin和Xcode更新到iOS 10並且「在執行本機代碼時得到了SIGABRT ...」
實際錯誤消息:「在執行本機代碼有一個SIGABRT這通常表示在單聲道運行時或應用程序所使用的本機庫中的一個致命錯誤」
花了很多小時試圖解決這個問題後,我終於從挖掘iOS模擬器日誌中得到了線索。
詳細的錯誤消息:
加載組件: /用戶/用戶名/庫/開發商/ CoreSimulator /設備/ BC0B1376-DDDF-4DD1-954D-1872603FA8E6 /數據/容器/包/應用程序/2AA663A3-986B-434E-83B9-E7D88A6616FE/VSProjectName.app/.monotouch-64/System.ComponentModel.DataAnnotations.dll 發生未處理的異常。
2016年9月16日23:12:13.570 VSProjectName [5278:156681]未處理 異常:System.BadImageFormatException:無法加載文件或 組件或它的一個依賴。應該加載參考組件以執行。它們只能在 僅反射加載程序上下文中加載。
文件名: 'System.ComponentModel.DataAnnotations' 2016年9月16日23 :12:13.570 VSProjectName [5278:156681]未處理託管異常: 未能加載組件
回答 在Xamarin.iOS項目引用的我的一個共享類庫項目中,我引用了.NET 4.5版的System.ComponentModel.DataAnnotations.dll程序集,即使在任何一個程序集中都沒有任何代碼這些項目正在使用這個程序集。
該應用程序在啓動時不斷崩潰,因爲此版本的System.ComponentModel.DataAnnotations.dll程序集無法在移動平臺上運行。
刪除System.ComponentModel.DataAnnotations從類庫項目中的引用列表中解決了問題。
請注意,在我升級到Xcode Version 8.0(8A218a)和Xamarin 4.2.0.680 for Visual Studio之前,此代碼工作正常。