Xamarin和Xcode更新到iOS 10并且“在执行本机代码时得到了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之前,此代码工作正常。