在我将Xamarin和Xcode升级到iOS 10更新/发布后,我的应用程序在启动时开始失败。该应用程序甚至从未进入 App.cs 构造函数供我开始调试。
实际错误消息: “执行本机代码时出现了SIGABRT。这通常表示单声道运行时或应用程序使用的本机库之一出现致命错误。”
答案 0 :(得分:1)
在花了好几个小时试图解决这个问题后,我终于从挖掘iOS模拟器日志中得到了线索。
详细错误消息:
加载装配: /Users/username/Library/Developer/CoreSimulator/Devices/BC0B1376-DDDF-4DD1-954D-1872603FA8E6/data/Containers/Bundle/Application/2AA663A3-986B-434E-83B9-E7D88A6616FE/VSProjectName.app/.monotouch-64/ System.ComponentModel.DataAnnotations.dll 发生了未处理的异常。
2016-09-16 23:12:13.570 VSProjectName [5278:156681]未处理 异常:System.BadImageFormatException:无法加载文件或 程序集或其依赖项之一。参考组件不应该 被加载执行。它们只能加载到 仅反射加载器上下文。
文件名:'System.ComponentModel.DataAnnotations'2016-09-16 23:12:13.570 VSProjectName [5278:156681]未处理的托管异常: 无法加载程序集
<强>答案强> 在我的一个共享类库项目中,由Xamarin.iOS项目引用,我引用了 System.ComponentModel.DataAnnotations.dll 程序集的.NET 4.5版本,即使没有在任何使用此程序集的项目中的任何位置编码。
该应用程序在启动时一直崩溃,因为此版本的 System.ComponentModel.DataAnnotations.dll 程序集无法在移动平台上运行。
从类库项目中的引用列表中删除 System.ComponentModel.DataAnnotations 解决了这个问题。
请注意,在我升级到Xcode版本8.0(8A218a)和Xamarin 4.2.0.680 for Visual studio之前,此代码工作正常。