using System.Runtime.InteropServices;
class MyImports {
[DllImport ("__Internal")]
public static extern void MyInexistentFunc ();
有几种可能的解决方案:
从源代码中删除有问题的 P/Invoke。
通过将“链接器行为”设置为“所有程序集”) ,为所有程序集启用托管链接器, (在项目的 iOS 生成选项中完成此操作。 这将有效地从应用 (自动删除未使用的所有 P/Invoke,而不是像上一点) 那样手动删除。 缺点是,这会使模拟器的生成速度稍慢一些,如果它使用反射,它可能会破坏你的应用 - 有关链接器的详细信息,可 在此处 找到)
创建包含缺失的本机符号的第二个本机库。 请注意,这只是一种解决方法, (如果你碰巧尝试调用这些函数,你的应用将) 崩溃。
MT5215:对“*”的引用可能需要对本机链接器的其他 -framework=XXX 或 -lXXX 指令
这是一个警告,指示检测到 P/Invoke 引用了相关库,但应用未与其链接。
链接 AOT 编译器的输出时报告此错误。
此错误很可能表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。
MT5217:本机链接可能失败,因为链接器命令行) 字符 (* 太长。
本机链接失败,可能是因为链接器命令太长而发生此情况。
Xamarin.iOS 项目通常会动态引用本机符号,这意味着本机链接器可能会在本机链接过程中删除此类本机符号,因为本机链接器看不到这些符号被使用。
通常,Xamarin.iOS 会要求本机链接器使用 -u symbol
链接器标志保留此类符号,但如果有许多此类符号,则整个命令行可能会超过操作系统指定的最大命令行长度。
此类动态符号有几个可能的来源:
P/调用静态链接库中的方法 (dll 名称位于 __Internal
DllImport 属性 [DllImport ("__Internal")]
) 。
从绑定项目 (属性) [Field]
对静态链接库中内存位置的字段引用。
Objective-C 使用增量生成或不使用 registrar 静态) 时,从绑定项目中静态链接的库中引用的类 (。
可能的解决方法:
如果可能,请为所有程序集启用托管链接器 (,而不是仅) SDK 程序集。 这可能会删除足够多的动态符号源,使链接器命令行不会超过最大值。
减少 P/Invoke、字段引用和/或 Objective-C 类的数量。
重写动态符号以具有较短的名称。
在项目的 iOS 生成选项中作为附加的 mtouch 参数传递 -dlsym:false
。 使用此选项,Xamarin.iOS 将在 AOT 编译的代码中生成本机引用,并且无需要求链接器保留此符号。 但是,这仅适用于设备生成,如果静态库中不存在对函数的 P/Invoke,则会导致链接器错误。
在项目的 iOS 生成选项中作为其他 mtouch 参数传递 --dynamic-symbol-mode=code
。 使用此选项,Xamarin.iOS 将生成引用这些符号的其他本机代码,而不是要求本机链接器使用命令行参数保留这些符号。 此方法的缺点是它会在一定程度上增加可执行文件的大小。
通过将作为附加的 mtouch 参数传递到--registrar:static
项目的 iOS 生成选项 (用于模拟器生成来启用静态registrar,因为静态registrar已是设备生成) 的默认值。 静态 registrar 将生成静态引用 Objective-C 类的代码,因此无需要求本机链接器保留此类。
禁用设备生成) 的增量生成 (。 启用增量生成后,本机链接器不会考虑静态 registrar 生成的代码,这意味着 Xamarin.iOS 仍必须要求链接器保留引用 Objective-C 的类。 因此,禁用增量生成将避免这种需求。
MT5218:无法忽略动态符号 {symbol} (--ignore-dynamic-symbol={symbol}) ,因为它未检测为动态符号。
命令行参数 --ignore-dynamic-symbol=symbol
已传递,但此符号不是识别为必须手动保留的动态符号的符号。
有两main原因:
符号名称不正确。
不要在符号名称前面添加下划线。
类的 Objective-C 符号为 OBJC_CLASS_$_<classname>
。
符号正确,但它是已通过正常方式保留的符号, (某些生成选项会导致动态符号的确切列表) 变化。
MT5303:无法 (dSYM 目录) 生成调试符号。 请查看生成日志。
在最终的 .app 目录中运行 dsymutil 以创建调试符号时出错。 请查看生成日志以查看 dsymutil 的输出以及如何修复它。
MT5304:无法去除最终二进制文件。 请查看生成日志。
运行“strip”工具从应用程序中删除调试信息时出错。
MT5306:无法创建胖库。 请查看生成日志。
运行“lipo”工具时出错。 请查看生成日志,查看“lipo”报告的错误。
MT5307:无法对可执行文件进行签名。 请查看生成日志。
对应用程序进行签名时出错。 请查看生成日志,查看“codesign”报告的错误。
MT600x:Stripper
MT6001:运行版本的 Cecil 不支持程序集剥离
MT6002:无法条带程序集 *
。
去除托管代码 (从应用程序中的程序集中删除 IL 代码) 时出错。
MT6003:[UnauthorizedAccessException 消息]
从应用程序中删除调试符号时发生安全错误。
MT7xxx:MSBuild 错误消息
MT7001:无法解析 WiFi 调试器设置的主机 IP。
MSBuild 任务:DetectDebugNetworkConfigurationTaskBase
疑难解答步骤:
尝试运行 csharp -e 'System.Net.Dns.GetHostEntry (System.Net.Dns.GetHostName ()).AddressList'
(,该) 应提供 IP 地址,而不是明显错误。
尝试运行“ping 'hostname'”,这可能会为你提供更多信息,例如: cannot resolve MyHost.local: Unknown host
在某些情况下,这是一个“本地网络”问题,可以通过在 中添加/etc/hosts
未知主机127.0.0.1 MyHost.local
来解决。
MT7002:此计算机没有任何网络适配器。 在设备上通过 WiFi 进行调试或分析时,这是必需的。
MSBuild 任务:DetectDebugNetworkConfigurationTaskBase
MT7003:应用扩展“*”不包含 Info.plist。
MSBuild 任务:ValidateAppBundleTaskBase
MT7004:应用扩展“*”未指定 CFBundleIdentifier。
MSBuild 任务:ValidateAppBundleTaskBase
MT7005:应用扩展“*”未指定 CFBundleExecutable。
MSBuild 任务:ValidateAppBundleTaskBase
MT7006:应用扩展“*”具有无效的 CFBundleIdentifier (*) ,它不以main应用程序包的 CFBundleIdentifier (*) 开头。
MSBuild 任务:ValidateAppBundleTaskBase
MT7007:应用扩展“*”具有 CFBundleIdentifier (*) ,以非法后缀“.key”结尾。
MSBuild 任务:ValidateAppBundleTaskBase
MT7008:应用扩展“*”未指定 CFBundleShortVersionString。
MSBuild 任务:ValidateAppBundleTaskBase
MT7009:应用扩展“*”具有无效的 Info.plist:它不包含 NSExtension 字典。
MSBuild 任务:ValidateAppBundleTaskBase
MT7010:应用扩展“*”的 Info.plist 无效:NSExtension 字典不包含 NSExtensionPointIdentifier 值。
MSBuild 任务:ValidateAppBundleTaskBase
MT7011:WatchKit 扩展“*”的 Info.plist 无效:NSExtension 字典不包含 NSExtensionAttributes 字典。
MSBuild 任务:ValidateAppBundleTaskBase
MT7012:WatchKit 扩展“*”没有正好一个watch应用。
MSBuild 任务:ValidateAppBundleTaskBase
MT7013:WatchKit 扩展“*”的 Info.plist 无效:UIRequiredDeviceCapabilities 必须包含“watch-companion”功能。
MSBuild 任务:ValidateAppBundleTaskBase
MT7014:监视应用“*”不包含 Info.plist。
MSBuild 任务:ValidateAppBundleTaskBase
MT7015:监视应用“*”未指定 CFBundleIdentifier。
MSBuild 任务:ValidateAppBundleTaskBase
MT7016:监视应用“*”具有无效的 CFBundleIdentifier (*) ,它不以main应用程序包的 CFBundleIdentifier (*) 开头。
MSBuild 任务:ValidateAppBundleTaskBase
MT7017:监视应用“*”没有有效的 UIDeviceFamily 值。 应为“Watch (4) ”,但发现“* (*) ”。
MSBuild 任务:ValidateAppBundleTaskBase
MT7018:监视应用“*”未指定 CFBundleExecutable
MSBuild 任务:ValidateAppBundleTaskBase
MT7019:监视应用“*”具有无效的 WKCompanionAppBundleIdentifier 值 ('*') ,它与main应用程序包的 CFBundleIdentifier ('*') 不匹配。
MSBuild 任务:ValidateAppBundleTaskBase
MT7020:监视应用“*”具有无效的 Info.plist:WKWatchKitApp 密钥必须存在且值为“true”。
MSBuild 任务:ValidateAppBundleTaskBase
MT7021:监视应用“*”具有无效的 Info.plist:LSRequiresIPhoneOS 密钥不得存在。
MSBuild 任务:ValidateAppBundleTaskBase
MT7022:监视应用“*”不包含监视扩展。
MSBuild 任务:ValidateAppBundleTaskBase
MT7023:监视扩展“*”不包含 Info.plist。
MSBuild 任务:ValidateAppBundleTaskBase
MT7024:监视扩展“*”未指定 CFBundleIdentifier。
MSBuild 任务:ValidateAppBundleTaskBase
MT7025:监视扩展“*”未指定 CFBundleExecutable。
MSBuild 任务:ValidateAppBundleTaskBase
MT7026:监视扩展“*”具有无效的 CFBundleIdentifier (*) ,它不以main应用程序包的 CFBundleIdentifier (*) 开头。
MSBuild 任务:ValidateAppBundleTaskBase
MT7027:监视扩展“*”具有 CFBundleIdentifier (*) ,以非法后缀“.key”结尾。
MSBuild 任务:ValidateAppBundleTaskBase
MT7028:监视扩展“*”具有无效的 Info.plist:它不包含 NSExtension 字典。
MSBuild 任务:ValidateAppBundleTaskBase
MT7029:监视扩展“*”的 Info.plist 无效:NSExtensionPointIdentifier 必须为“com.apple.watchkit”。
MSBuild 任务:ValidateAppBundleTaskBase
MT7030:监视扩展“*”的 Info.plist 无效:NSExtension 字典必须包含 NSExtensionAttributes。
MSBuild 任务:ValidateAppBundleTaskBase
MT7031:监视扩展“*”的 Info.plist 无效:NSExtensionAttributes 字典必须包含 WKAppBundleIdentifier。
MSBuild 任务:ValidateAppBundleTaskBase
MT7032:WatchKit 扩展“*”具有无效的 Info.plist:UIRequiredDeviceCapabilities 不应包含“watch-companion”功能。
MSBuild 任务:ValidateAppBundleTaskBase
MT7033:监视应用“*”不包含 Info.plist。
MSBuild 任务:ValidateAppBundleTaskBase
MT7034:监视应用“*”未指定 CFBundleIdentifier。
MSBuild 任务:ValidateAppBundleTaskBase
MT7035:监视应用“*”没有有效的 UIDeviceFamily 值。 应为“*”,但找到“* (*) ”。
MSBuild 任务:ValidateAppBundleTaskBase
MT7036:监视应用“*”未指定 CFBundleExecutable。
MSBuild 任务:ValidateAppBundleTaskBase
MT7037:WatchKit 扩展“{extensionName}”具有无效的 WKAppBundleIdentifier 值 ('*') ,它与监视应用的 CFBundleIdentifier ('*') 不匹配。
MSBuild 任务:ValidateAppBundleTaskBase
MT7038:监视应用“*”具有无效的 Info.plist:WKCompanionAppBundleIdentifier 必须存在,并且必须与main应用捆绑包的 CFBundleIdentifier 匹配。
MSBuild 任务:ValidateAppBundleTaskBase
MT7039:监视应用“*”具有无效的 Info.plist:LSRequiresIPhoneOS 密钥不得存在。
MSBuild 任务:ValidateAppBundleTaskBase
MT7040:应用捆绑 {AppBundlePath} 不包含 Info.plist。
MSBuild 任务:ValidateAppBundleTaskBase
MT7041:Main Info.plist 路径未指定 CFBundleIdentifier。
MSBuild 任务:ValidateAppBundleTaskBase
MT7042:Main Info.plist 路径未指定 CFBundleExecutable。
MSBuild 任务:ValidateAppBundleTaskBase
MT7043:Main Info.plist 路径未指定 CFBundleSupportedPlatforms。
MSBuild 任务:ValidateAppBundleTaskBase
MT7044:Main Info.plist 路径未指定 UIDeviceFamily。
MSBuild 任务:ValidateAppBundleTaskBase
MSBuild 任务:PropertyListEditorTaskBase
其中 * 可以是:
array
integer
MT7046:添加:Entry,*,错误指定。
MSBuild 任务:PropertyListEditorTaskBase
MT7047:添加:Entry,*,包含无效的数组索引。
MSBuild 任务:PropertyListEditorTaskBase
MT7048:添加:* 条目已存在。
MSBuild 任务:PropertyListEditorTaskBase
MT7049:添加:无法向父级添加条目*。
MSBuild 任务:PropertyListEditorTaskBase
MT7050:删除:无法从父项中删除条目*。
MSBuild 任务:PropertyListEditorTaskBase
MT7051:删除:条目、*、包含无效数组索引。
MSBuild 任务:PropertyListEditorTaskBase
MT7052:删除:条目,*,不存在。
MSBuild 任务:PropertyListEditorTaskBase
MT7053:导入:Entry,*,未正确指定。
MSBuild 任务:PropertyListEditorTaskBase
MT7054:导入:Entry,*,包含无效的数组索引。
MSBuild 任务:PropertyListEditorTaskBase
MT7055:导入:读取文件时出错:*。
MSBuild 任务:PropertyListEditorTaskBase
MT7056:导入:无法向父级添加条目*。
MSBuild 任务:PropertyListEditorTaskBase
MT7057:合并:无法向 dict 添加数组条目。
MSBuild 任务:PropertyListEditorTaskBase
MT7058:合并:指定的条目必须是容器。
MSBuild 任务:PropertyListEditorTaskBase
MT7059:合并:条目,*,包含无效的数组索引。
MSBuild 任务:PropertyListEditorTaskBase
MT7060:合并:条目,*,不存在。
MSBuild 任务:PropertyListEditorTaskBase
MT7061:合并:读取文件时出错:*。
MSBuild 任务:PropertyListEditorTaskBase
MT7062:Set: Entry, *, 错误指定。
MSBuild 任务:PropertyListEditorTaskBase
MT7063:Set: Entry, *, Contains Invalid Array Index.
MSBuild 任务:PropertyListEditorTaskBase
MT7064:Set: Entry,*,不存在。
MSBuild 任务:PropertyListEditorTaskBase
MT7065:未知属性列表编辑器操作:*。
MSBuild 任务:PropertyListEditorTaskBase
MT7066:加载“*”时出错:*。
MSBuild 任务:PropertyListEditorTaskBase
MT7067:保存“*”时出错:*。
MSBuild 任务:PropertyListEditorTaskBase
MT8xxx:运行时错误消息
MT8001:本机 Xamarin.iOS 运行时与 monotouch.dll 之间的版本不匹配。 请重新安装 Xamarin.iOS。
MT8002:在类型“*”中找不到方法“*”。
MT8003:在类型“*”上找不到已关闭的泛型方法“*”。
MT8004:无法为类型为“*”) 的本机对象 0x* (创建 * 实例,因为此本机对象已存在另一个实例, (类型为 *) 。
MT8005:包装器类型“*”缺少其本机 ObjectiveC 类“*”。
MT8006:在类型“*”上找不到选择器“*”
MT8007:无法获取类型“*”上选择器“*”的方法描述符,因为选择器不对应于方法
MT8008:加载的 Xamarin.iOS.dll 版本编译为 * 位,而进程为 * 位。 请在 中 http://bugzilla.xamarin.com提交 bug。
这表示生成过程中出现了错误。 请在 github 上提交新问题。
这表示 API 未正确绑定。 如果这是 Xamarin 公开的 API,请在 github 上提出新问题。 如果是第三方绑定,请联系供应商。
MT8010:Xamarin 之间的本机类型大小不匹配。[iOS|Mac].dll和执行体系结构。 Xamarin。[iOS|Mac].dll是为 *位生成的,而当前进程是 *位。
这表示生成过程中出现了错误。 请在 github 上提交新问题。
MT8011:找不到委托以阻止转换属性 ([DelegateProxy]) 方法 的返回值 。 请在 中 http://bugzilla.xamarin.com提交 bug。
Xamarin.iOS 在运行时无法找到所需的方法, (将委托转换为块) 。
这通常表示 Xamarin.iOS 中的 bug。 请在 github 上提交新问题。
MT8012 :方法的返回值的 DelegateProxyAttribute 无效:DelegateType 为 null。 请在 中 http://bugzilla.xamarin.com提交 bug。
有关方法的 DelegateProxy 属性无效。
这通常表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。
MT8013 :方法的返回值的 DelegateProxyAttribute 无效:DelegateType ({2}) 指定没有“Handler”字段的类型。 请在 中提交 bug http://bugzilla.xamarin.com。
所 [DelegateProxy]
讨论方法的 属性无效。
这通常表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。
MT8014 :方法返回值的 DelegateProxyAttribute 无效:DelegateType 的 ({2}) “Handler”字段为 null。 请在 中提交 bug http://bugzilla.xamarin.com。
所 [DelegateProxy]
讨论方法的 属性无效。
这通常表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。
MT8015 :方法返回值的 DelegateProxyAttribute 无效。:DelegateType 的 ({2}) “Handler”字段不是委托,它是 *。 请在 中提交 bug http://bugzilla.xamarin.com。
有关方法的 DelegateProxy 属性无效。
这通常表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。
所 [DelegateProxy]
讨论方法的 属性无效。
这通常表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。
这表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。
MT8019:在加载的程序集中找不到程序集 * 。
这表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。
这表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。
MT8021:未知的隐式令牌类型:*。
这表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。
这表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。
MT8023:需要实例对象来构造开放泛型方法的封闭泛型方法: * (令牌引用: *) 。 请在 上提交 bug 报告 http://bugzilla.xamarin.com。
这表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。
这表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。