添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

MT0000:意外错误 - 请在 上填写 bug 报告 https://github.com/xamarin/xamarin-macios/issues/new

出现意外错误情况。 请在 GitHub 上提交一个新问题,其中包含尽可能多的信息,包括:

  • 具有最大详细 (的完整生成日志,例如 -v -v -v -v ,在 附加 mtouch 参数 ) ;
  • 重现错误的最小测试用例;和
  • 所有版本信息
  • 获取确切版本信息的最简单方法是使用 “Visual Studio for Mac ”菜单、 “关于Visual Studio for Mac 项”、“ 显示详细信息 ”按钮和复制/粘贴版本信息, (可以使用“ 复制信息 ”按钮) 。

    MT0001:提供的“-devname”没有任何特定于设备的操作

    如果请求) 没有设备特定的操作 (-logdev/-installdev/-killdev/-launchdev/-listapps,则会发出此警告。

    MT0002:无法分析环境变量 *。

    如果尝试设置无效的环境键=值变量对,则会发生此错误。 正确的格式为: mtouch --setenv=VARIABLE=VALUE

    MT0003:应用程序名称“*.exe”与 SDK 或产品程序集 (.dll) 名称冲突。

    可执行程序集的名称和应用程序的名称与应用中任何 dll 的名称都不匹配。 请修改可执行文件的名称。

    MT0004:新的重新计算逻辑也需要启用 SGen。

    如果启用 refcounting 扩展,还必须在项目的 iOS 生成选项 (高级选项卡) 启用 SGen 垃圾回收器。

    从 Xamarin.iOS 7.2.1 开始,此要求已解除,可以使用 Boehm 和 SGen 垃圾回收器启用新的 refcounting 逻辑。

    MT0005:输出目录 * 不存在。

    请创建目录。

    此错误不再生成,如果目录不存在,mtouch 将自动创建该目录。

    MT0006:*上没有开发平台,请使用 --platform=PLAT 指定 SDK。

    Xamarin.iOS 在错误消息中提到的位置找不到 SDK 目录。 请验证路径是否正确。

    MT0007:根程序集 * 不存在。

    Xamarin.iOS 在错误消息中提到的位置找不到程序集。 请验证路径是否正确。

    MT0008:只应提供一个根程序集,找到的 # 程序集:*。

    将多个根程序集传递给 mtouch,而只能有一个根程序集。

    MT0009:加载程序集时出错:*。

    从根程序集引用加载程序集时出错。 可以在生成输出中提供详细信息。

    MT0010:无法分析命令行参数:*。

    分析命令行参数时出错。 请验证它们是否正确。

    MT0011:* 是针对比 MonoTouch 支持更新的运行时 (*) 生成的。

    通常会报告此警告,因为项目引用了不是使用 Xamarin.iOS BCL 生成的类库。

    与使用 .NET 4.0 SDK 的应用可能无法在仅支持 .NET 2.0 的系统上运行一样,使用 .NET 4.0 生成的库可能无法在 Xamarin.iOS 上运行,它可能使用 Xamarin.iOS 上不存在的 API。

    常规解决方案是将库生成为 Xamarin.iOS 类库。 这可以通过创建新的 Xamarin.iOS 类库项目并向其添加所有源文件来实现。 如果没有库的源代码,则应联系供应商,请求供应商提供其库的 Xamarin.iOS 兼容版本。

    MT0012:提供不完整的数据以完成 *。

    在当前版本的 Xamarin.iOS 中不再报告此错误。

    MT0013:分析支持也需要启用 sgen。

    如果启用了分析 (,则必须启用 SGen ( -- 分析) ,则必须启用 sgen) 。

    MT0014:iOS * SDK 不支持生成面向 *的应用程序。

    在以下情况下可能会发生这种情况:

  • 已启用 ARMv6 并安装 Xcode 4.5 或更高版本。
  • 已启用 ARMv7s 并安装 Xcode 4.4 或更早版本。
  • 请验证已安装的 Xcode 版本是否支持所选体系结构。

    MT0015:无效的 ABI:*。 支持的 ABI 包括:i386、x86_64、armv7、armv7+llvm、armv7+llvm+thumb2、armv7s、armv7s+llvm、armv7s+llvm+thumb2、arm64 和 arm64+llvm。

    向 mtouch 传递了无效的 ABI。 请指定有效的 ABI。

    MT0016:选项 * 已弃用。

    提到的 mtouch 选项已弃用,将被忽略。

    MT0017:应提供根程序集。

    生成应用时,需要指定根程序集 (通常是main可执行文件) 。

    MT0018:未知命令行参数:*。

    Mtouch 无法识别错误消息中提到的命令行参数。

    MT0019:只能使用一个 --[log|install|kill|launch]dev 或 --[launch|debug]sim 选项。

    mtouch 有几个选项不能同时使用:

  • --logdev
  • --installdev
  • --killdev
  • --launchdev
  • --launchdebug
  • --launchsim
  • MT0020:“*”的有效选项为“*”。

    MT0021:使用静态 registrar (在编译设备) 时,无法使用 gcc/g++ (-use-gcc) 进行编译。 删除 --use-gcc 标志或使用动态 registrar (-registrar:d ynamic) 。

    MT0022:选项“--unsupported--enable-generics-in-registrar”和“--registrar”不兼容。

    删除选项 --unsupported--enable-generics-in-registrar --registrar 。 从 Xamarin.iOS 7.2.1 开始,默认 registrar 支持泛型。

    (已从 mtouch) 中删除命令行参数 --unsupported--enable-generics-in-registrar ,则不再显示此错误。

    MT0023:应用程序名称“*.exe”与其他用户程序集冲突。

    可执行程序集的名称和应用程序的名称与应用中任何 dll 的名称都不匹配。 请修改可执行文件的名称。

    MT0024:找不到所需的文件“*”。

    MT0025:未提供 SDK 版本。 请添加 --sdk=X.Y 以指定应使用哪个 iOS SDK 来生成应用程序。

    MT0026:无法分析命令行参数“*”:*

    MT0027:选项“*”和“*”不兼容。

    MT0028:面向 iOS 4.1 或更早版本时,无法启用 PIE (-pie) 。 请禁用 PIE (-pie:false) 或将部署目标至少设置为 iOS 4.2

    MT0029:REPL (--enable-repl) 仅在模拟器 (--sim) 中受支持。

    仅当为模拟器生成时,才支持 REPL。 这意味着,如果传递给 --enable-repl mtouch,则还必须传递 --sim

    MT0030:可执行文件名称 (*) 与应用名称 (*) 不同,这可能会阻止正确符号化崩溃日志。

    当 Xcode 符号化 (将内存地址转换为函数名称和文件/行号) 如果可执行文件和应用具有不同名称, (没有扩展名) ,则进程可能会失败。

    若要解决此问题,请更改项目的“生成/iOS 应用程序”选项中的“应用程序名称”,或更改项目的“生成/输出”选项中的“程序集名称”。

    MT0031:命令行参数“--enable-background-fetch”和“--launch-for-background-fetch”也需要“--launchsim”。

    MT0032:除非还指定了“--debug”,否则将忽略选项“--debugtrack”。

    MT0033:Xamarin.iOS 项目必须引用monotouch.dll或Xamarin.iOS.dll

    MT0034:在同一个 Xamarin.iOS 项目中不能同时包含“monotouch.dll”和“Xamarin.iOS.dll” - 显式引用“*”,而“*”由“*”引用。

    MT0036:无法启动 * 应用的 * 模拟器。 请在项目的 iOS 生成选项 (“高级”页) 中启用正确的体系结构 () 。

    MT0037:monotouch.dll不兼容 64 位。 引用Xamarin.iOS.dll,或者不针对 ARM64 和/或x86_64) (64 位体系结构生成。

    MT0038:引用Xamarin.iOS.dll时不支持旧 registrars (-registrar:oldstatic|olddynamic) 。

    MT0039:面向 ARMv6 的应用程序不能引用Xamarin.iOS.dll。

    MT0040:找不到“*”引用的程序集“*”。

    MT0041:不能同时引用“monotouch.dll”和“Xamarin.iOS.dll”。

    MT0042:找不到对monotouch.dll或Xamarin.iOS.dll的引用。 将添加对monotouch.dll的引用。

    MT0043:引用“Xamarin.iOS.dll”时,当前不支持 Boehm 垃圾回收器。 已改为选择 SGen 垃圾回收器。

    统一项目仅支持 SGen 垃圾回收器。 确保没有其他 mtouch 标志将 Boehm 指定为垃圾回收器。

    MT0044:仅 Xcode 6.0 或更高版本支持 --listsim。

    安装较新的 Xcode 版本。

    MT0045:仅当使用 iOS 8.0 (或更高版本) SDK 时,才支持 --extension。

    MT0047:统一应用程序的最小部署目标是 5.1.1,当前部署目标是“*”。 请在项目的 iOS 应用程序选项中选择较新的部署目标。

    MT0049:仅当部署目标为 8.0 或更高版本时,才支持 *.framework。 * 功能可能无法正常工作。

    部署目标引用的 iOS 版本中不支持指定的框架。 将部署目标更新到较新的 iOS 版本,或者从应用中删除指定框架的使用。

    MT0051:Xamarin.iOS * 需要 Xcode 5.0 或更高版本。 在 *) 中找到的当前 Xcode 版本 (为 *。

    安装较新的 Xcode。

    MT0052:未指定命令。

    未为 mtouch 指定任何操作。

    MT0054:无法规范路径“*”: *

    这是内部错误。 如果看到此错误,请在 github 上提交新问题。

    MT0055:Xcode 路径“*”不存在。

    使用 --sdkroot 传递的 Xcode 路径不存在。 请指定有效的路径。

    MT0056:在 /Applications/Xcode.app) (默认位置找不到 Xcode。 请安装 Xcode,或使用 --sdkroot <路径传递自定义路径>。

    MT0057:无法确定从 sdk 根“*”Xcode.app 的路径。 请指定 Xcode.app 捆绑包的完整路径。

    使用 --sdkroot 传递的路径未指定有效的 Xcode 应用。 请指定 Xcode 应用的路径。

    MT0058:Xcode.app“*”无效, (文件“*”不存在) 。

    使用 --sdkroot 传递的路径未指定有效的 Xcode 应用。 请指定 Xcode 应用的路径。

    MT0059:在系统上找不到当前选定的 Xcode: *

    MT0060:在系统上找不到当前选定的 Xcode。 “xcode-select --print-path”返回了“*”,但该目录不存在。

    MT0061:使用 --sdkroot) (未指定任何 Xcode.app,使用“xcode-select --print-path”报告的系统 Xcode: *

    这是一个信息性警告,说明将使用哪个 Xcode,因为未指定任何代码。

    MT0062:未使用 --sdkroot 或“xcode-select --print-path”) 指定 (指定 Xcode.app,而是使用默认 Xcode: *

    这是一个信息性警告,说明将使用哪个 Xcode,因为未指定任何代码。

    MT0063:在扩展 * (Info.plist) 中找不到 CFBundleExecutable 条目的可执行文件

    每个 Info.plist 都必须具有使用 CFBundleExecutable 条目) 的可执行 (,但在生成期间应自动生成一个条目。

    这通常表示 Xamarin.iOS 中的 bug;请使用测试用例在 github 上提交新问题。

    MT0064:Xamarin.iOS 仅支持具有统一项目的嵌入式框架。

    使用统一 API 时,Xamarin.iOS 仅支持嵌入式框架;请更新项目以使用统一 API。

    MT0065:当部署目标至少为 8.0 时,Xamarin.iOS 仅支持嵌入框架 (当前部署目标: * 嵌入式框架: *)

    Xamarin.iOS 仅在部署目标至少为 8.0 (时才支持嵌入框架,因为早期版本的 iOS 不支持嵌入框架) 。

    请将项目的 Info.plist 中的部署目标更新为 8.0 或更高版本。

    MT0066:无效的生成 registrar 程序集: *

    这通常表示 Xamarin.iOS 中的 bug;请使用测试用例在 github 上提交新问题。

    MT0067:无效 registrar: *

    这通常表示 Xamarin.iOS 中的 bug;请使用测试用例在 github 上提交新问题。

    MT0068:目标框架的值无效:*。

    使用 --target-framework 参数传递了无效的目标框架。 请指定有效的目标框架。

    MT0070:无效的目标框架:*。 有效目标框架为:*。

    使用 --target-framework 参数传递了无效的目标框架。 请指定有效的目标框架。

    MT0071:未知平台:*。 这通常表示 Xamarin.iOS 中的 bug;请使用测试用例在 中 http://bugzilla.xamarin.com 提交 bug 报告。

    这通常表示 Xamarin.iOS 中的 bug;请使用测试用例在 github 上提交新问题。

    MT0072:平台“*”不支持扩展。

    这通常表示 Xamarin.iOS 中的 bug;请使用测试用例在 github 上提交新问题。

    MT0073:Xamarin.iOS * 不支持 * 的部署目标, (最小值为 *) 。 请在项目的 Info.plist 中选择较新的部署目标。

    最小部署目标是在错误消息中指定的目标;请在项目的 Info.plist 中选择较新的部署目标。

    如果无法更新部署目标,请使用较旧版本的 Xamarin.iOS。

    MT0074:Xamarin.iOS * 不支持 * 的最小部署目标, (最大值为 *) 。 请在项目的 Info.plist 中选择较旧的部署目标,或升级到较新版本的 Xamarin.iOS。

    Xamarin.iOS 不支持将最低部署目标设置为高于此特定版本的 Xamarin.iOS 版本。

    请在项目的 Info.plist 中选择较旧的最小部署目标,或升级到较新版本的 Xamarin.iOS。

    MT0075:* 项目的体系结构“*”无效。 有效的体系结构为: *

    指定的体系结构无效。 请验证体系结构是否有效。

    MT0076:未使用 --abi 参数) (指定体系结构。 * 项目需要体系结构。

    这通常表示 Xamarin.iOS 中的 bug;请使用测试用例在 github 上提交新问题。

    MT0077:WatchOS 项目必须是扩展。

    这通常表示 Xamarin.iOS 中的 bug;请使用测试用例在 github 上提交新问题。

    MT0078:使用部署目标 < 8.0 启用增量生成 (当前 *) 。 (生成的应用程序无法在 iOS 9) 上启动,因此部署目标将设置为 8.0,则不支持此操作。

    这是一条警告,通知此版本的部署目标已设置为 8.0,以便增量生成正常工作。

    仅当部署目标至少为 8.0 (时,才支持增量生成,否则生成的应用程序将不会在 iOS 9 上启动,否则) 。

    这是一条警告,通知当前版本的 Xcode 不是此版本的 Xamarin.iOS 的推荐 Xcode 版本。

    请升级 Xcode 以确保最佳行为。

    MT0080:禁用 NewRefCount--new-refcount:false 已弃用。

    这是一条警告,通知禁用新 refcount (-new-refcount:false) 的请求已被忽略。

    现在,所有项目都要求使用新的 refcount 功能,因此无法再禁用。

    MT0081:命令行参数 --download-crash-report 还需要 --download-crash-report-to。

    MT0083:watchOS 不支持仅限 Asm 的位代码。 使用 --bitcode:marker 或 --bitcode:full。

    MT0084:模拟器中不支持 Bitcode。 为模拟器生成时,请勿传递 --bitcode。

    MT0085:找不到对“*”的引用。 系统会自动添加它。

    MT0086:为 TVOS 或 WatchOS 生成时,必须指定目标框架 (--target-framework) 。

    这表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。

    MT0087:增量生成 ( -- boehm GC 不支持 fastdev) 。 增量生成将被禁用。

    MT0088:对于 watchOS 应用,GC 必须处于协作模式。 请删除 mtouch 的 --coop:false 参数。

    MT0089:为 GC 启用协作模式时,选项“*”不能采用值“*”。

    Xamarin.iOS 需要错误消息中指定的 SDK 版本中的头文件来生成应用程序。 修复此错误的建议方法是升级 Xcode 以获取所需的 SDK,这将包括所有必需的头文件。 如果安装了多个版本的 Xcode,或者想要在非默认位置使用 Xcode,请确保在 IDE 的首选项中设置正确的 Xcode 位置。

    一种可能的替代解决方案是启用托管链接器。 这将删除未使用的 API,在大多数情况下,包括缺少头文件 (或不完整) 的新 API。 但是,如果项目使用比 Xcode 提供的 SDK 更新的 SDK 中引入的 API,则此操作将不起作用。

    最后一种解决方案是使用较旧版本的 Xamarin.iOS,该版本支持项目所需的 SDK。

    MT0093:找不到“mlaunch”。

    MT0095:无法将 Aot 文件复制到目标目录 {dest}: {error}

    MT0096:找不到对Xamarin.iOS.dll的引用。

    MT0099:内部错误 *。 请使用测试用例 () https://bugzilla.xamarin.com 提交 bug 报告。

    当 Xamarin.iOS 中的内部一致性检查失败时,将报告此错误消息。

    这通常表示 Xamarin.iOS 中的 bug;请使用测试用例在 github 上提交新问题。

    MT0100:程序集生成目标“*”无效。 请使用测试用例 () https://bugzilla.xamarin.com 提交 bug 报告。

    当 Xamarin.iOS 中的内部一致性检查失败时,将报告此错误消息。

    这通常表示 Xamarin.iOS 中的 bug;请使用测试用例在 github 上提交新问题。

    MT0101:程序集“*”在 --assembly-build-target 参数中多次指定。

    错误消息中提到的程序集在 --assembly-build-target 参数中多次指定。 请确保每个程序集仅提及一次。

    MT0102:程序集“*”和“*”的目标名称 (“*”) 相同,但不同的目标 (“*”和“*”) 。

    错误消息中提到的程序集具有冲突的生成目标。

      --assembly-build-target:Assembly1.dll=framework=MyBinary --assembly-build-target:Assembly2.dll=dynamiclibrary=MyBinary
    

    此示例尝试使用同一个 make () MyBinary 创建动态库和框架。

    MT0103:静态对象“*”包含多个程序集 (“*”) ,但每个静态对象必须与一个程序集对应。

    错误消息中提到的程序集全部编译为单个静态对象。 这是不允许的,每个程序集都必须编译为不同的静态对象。

    --assembly-build-target:Assembly1.dll=staticobject=MyBinary --assembly-build-target:Assembly2.dll=staticobject=MyBinary
    

    此示例尝试生成一个静态对象, (MyBinary) 由两个程序集组成, Assembly1.dll (和 Assembly2.dll) ,这是不允许的。

    MT0105:未为“*”指定程序集生成目标。

    使用 --assembly-build-target指定程序集生成目标时,应用中的每个程序集都必须分配一个生成目标。

    当错误消息中提到的程序集未分配程序集生成目标时,将报告此错误。

    有关详细信息,请参阅 文档 --assembly-build-target

    MT0106:程序集生成目标名称“*”无效:不允许使用字符“*”。

    程序集生成目标名称必须是有效的文件名。

    例如,这些值将触发此错误:

    --assembly-build-target:Assembly1.dll=staticobject=my/path.o
    

    由于 my/path.o 目录分隔符字符而不是有效的文件名。

    MT0107:程序集“*”具有不同的自定义 LLVM 优化 (*) ,当它们全部编译为单个二进制文件时,不允许这样。

    MT0108:程序集生成目标“*”与任何程序集都不匹配。

    MT0109:程序集“”{0}从提供的路径 (提供的路径的不同路径加载: {1},实际路径: {2}) 。

    这是一条警告,指示应用程序引用的程序集是从请求的位置加载的。

    这可能意味着应用引用多个同名但来自不同位置的程序集,这可能会导致意外的结果, (仅使用第一个程序集) 。

    MT0110:增量生成已被禁用,因为此版本的 Xamarin.iOS 不支持包含第三方绑定库且编译为位代码的项目中的增量生成。

    增量生成已被禁用,因为此版本的 Xamarin.iOS 不支持包含第三方绑定库且编译为位代码的项目中的增量生成 (tvOS 和 watchOS 项目) 。

    你不需要执行任何操作,此消息纯粹是信息性的。

    有关详细信息,请参阅 bug #51710

    不再报告此警告。

    MT0111:已启用 Bitcode,因为此版本的 Xamarin.iOS 不支持在不启用位码的情况下使用 LLVM 生成 watchOS 项目。

    已自动启用 Bitcode,因为此版本的 Xamarin.iOS 不支持在不启用位码的情况下使用 LLVM 生成 watchOS 项目。

    你不需要执行任何操作,此消息纯粹是信息性的。

    有关详细信息,请参阅 bug #51634

    MT0112:本机代码共享已禁用,因为 *

    禁用代码共享的原因有多种:

  • 因为容器应用的部署目标早于 iOS 8.0 (为 *) ) 。
  • 本机代码共享需要 iOS 8.0,因为本机代码共享是使用 iOS 8.0 引入的用户框架实现的。

  • 因为容器应用包含 I18N 程序集 (*) 。
  • 如果容器应用包含 I18N 程序集,则当前不支持本机代码共享。

  • 因为容器应用具有托管链接器 (*) 的自定义 xml 定义。
  • 使用托管链接器自定义 xml 定义的项目不支持本机代码共享要求。

    MT0113:已对扩展“*”禁用本机代码共享,因为 *。

  • 因为容器应用 (*) 和扩展 (*) 之间的位代码选项不同。

    本机代码共享要求在共享代码的项目之间匹配位代码选项。

  • 因为 --assembly-build-target 选项在容器应用 (*) 和扩展 (*) 之间不同。

    本机代码共享要求 --assembly-build-target 选项在共享代码的项目之间相同。

    如果未在所有项目中启用或禁用增量生成,则可能会出现此情况。

  • 因为容器应用 (*) 和扩展 (*) 之间的 I18N 程序集不同。

    包含 I18N 程序集的扩展当前不支持本机代码共享。

  • 因为容器应用 (*) 和扩展 (*) 之间的 AOT 编译器的参数不同。

    本机代码共享要求 AOT 编译器的参数在共享代码的项目之间没有差异。

  • 因为容器应用 (*) 与扩展 (*) 之间的 AOT 编译器的其他参数不同。

    本机代码共享要求 AOT 编译器的参数在共享代码的项目之间没有差异。

    如果项目之间的“作为 64 位浮点执行所有 32 位浮点运算”不同,则会出现此情况。

  • 因为未在容器应用 (*) 和扩展 (*) 中启用或禁用 LLVM。

    本机代码共享要求为所有共享代码的项目启用或禁用 LLVM。

  • 因为容器应用 (*) 与扩展 (*) 之间的托管链接器设置不同。

    本机代码共享要求托管链接器设置对于共享代码的所有项目都是相同的。

  • 因为托管链接器跳过的程序集在容器应用 (*) 和扩展 (*) 之间是不同的。

    本机代码共享要求托管链接器设置对于共享代码的所有项目都是相同的。

  • 因为扩展具有托管链接器 (*) 的自定义 xml 定义。

    使用托管链接器自定义 xml 定义的项目不支持本机代码共享要求。

  • 因为在为此 ABI) 生成扩展时,容器应用不会生成 ABI * (。

    本机代码共享要求容器应用针对任何应用扩展生成的所有体系结构生成。

    例如:当扩展针对 ARM64+ARMv7 生成,但容器应用仅为 ARM64 生成时,会出现这种情况。

  • 因为容器应用是为 ABI *生成的,它与扩展的 ABI (*) 不兼容。

    本机代码共享要求所有项目针对完全相同的 API 生成。

    例如:当扩展针对 ARMv7+llvm+thumb2 生成,但容器应用仅为 ARMv7+llvm 生成时,会出现这种情况。

  • 因为容器应用从“*”引用程序集“*”,而扩展引用与“*”不同的版本。

    本机代码共享要求共享代码的所有项目对所有程序集使用相同的版本。

    Xamarin.iOS 项目通常会动态引用本机符号,这意味着本机链接器可能会在本机链接过程中删除此类本机符号,因为本机链接器看不到这些符号被使用。

    通常,Xamarin.iOS 会要求本机链接器使用 -u symbol 链接器标志 (保留此类符号) ,但在编译位代码时,本机链接器不接受该 -u 标志。

    Xamarin.iOS 实现了一个替代解决方案:我们生成引用这些符号的额外本机代码,因此本机链接器将看到这些符号被使用。 编译为 bitcode 时会自动完成此操作。

    如果 --dynamic-symbol-mode=linker 传递给 mtouch,则将禁用此替代解决方案,并且 Xamarin.iOS 将尝试传递到 -u 本机链接器。 这很可能导致本机链接器错误。

    解决方案是从项目的“生成”选项中的其他 mtouch 参数中删除 --dynamic-symbol-mode=linker 参数。

    MT0116:无效的体系结构:{arch}。 当部署目标为 11 或更高版本时,不支持 32 位体系结构。 确保项目不是针对 32 位体系结构生成的。

    iOS 11 不支持 32 位应用程序,因此,当部署目标为 iOS 11 或更高版本时,不支持为 32 位应用程序生成。

    将项目的 iOS 生成选项中的目标体系结构更改为 arm64,或者将项目的 Info.plist 中的部署目标更改为早期 iOS 版本。

    MT0117:无法在仅支持 64 位的模拟器上启动 32 位应用。

    MT0118:无法在预期的目录“{msymdir}”中找到 Aot 文件。

    MT0123:可执行程序集 * 不引用 *。

    在可执行程序集中找不到对平台程序集 (Xamarin.iOS.dll/ Xamarin.TVOS.dll / Xamarin.WatchOS.dll) 的引用。

    当可执行项目中没有使用平台程序集中的任何内容的代码时,通常会发生这种情况;例如,空 Main 方法 (,其他任何代码) 都不会显示此错误:

    class Program {
        void Main (string[] args)
    

    使用平台程序集中的 API 将解决以下错误:

    class Program {
        void Main (string[] args)
            System.Console.WriteLine (typeof (UIKit.UIWindow));
    

    MT0124:无法根据 LANG={LANG}) :{exception} 将当前语言设置为“{lang}” (

    这是一个警告,指示无法将当前语言设置为错误消息中的语言。

    当前语言将默认为系统语言。

    MT0125:模拟器中忽略 --assembly-build-target 命令行参数。

    无需执行任何操作,此消息纯粹是信息性的。

    MT0126:增量生成已被禁用,因为模拟器中不支持增量生成。

    无需执行任何操作,此消息纯粹是信息性的。

    MT0127:增量生成已被禁用,因为此版本的 Xamarin.iOS 不支持包含多个第三方绑定库的项目中的增量生成。

    增量生成已自动禁用,因为此版本的 Xamarin.iOS 并不总是正确生成具有多个第三方绑定库的项目。

    无需执行任何操作,此消息纯粹是信息性的。

    有关详细信息,请参阅 bug #52727

    MT0128:无法触摸文件“*”:*

    触摸文件 (操作以确保在) 正确完成部分生成时发生故障。

    此警告很可能被忽略;如果出现任何问题,将在 GitHub 上提出新问题,并将进行调查。

    若要生成应用程序,Xamarin.iOS 必须链接到系统库,其中一些库取决于错误消息中指定的 SDK 版本。 由于使用的是较旧版本的 SDK,对这些 API 的调用可能会在运行时失败。

    修复此错误的建议方法是升级 Xcode 以获取所需的 SDK。 如果安装了多个版本的 Xcode,或者想要在非默认位置使用 Xcode,请确保在 IDE 的首选项中设置正确的 Xcode 位置。

    或者,启用托管 链接器 以删除未使用的 API,包括在大多数情况下 () 需要指定库的新 API。 但是,如果项目需要比 Xcode 提供的 SDK 更新的 SDK 中引入的 API,则这不起作用。

    作为最后一种解决方案,请使用较旧版本的 Xamarin.iOS,该版本不需要在生成过程中提供这些新 SDK。

    MT10xx:Installer/mtouch

    MT1001:在指定目录中找不到应用程序

    MT1003:无法终止应用程序“*”。 可能需要手动终止应用程序。

    MT1004:无法获取已安装应用程序的列表。

    MT1005:无法终止设备“*”上的应用程序“*”:*- 可能必须手动终止应用程序。

    MT1006:无法在设备“*”上安装应用程序“*”:*。

    MT1007:无法在设备“*”上启动应用程序“*”:*。 仍可通过点击手动启动应用程序。

    MT1008:未能启动模拟器

    如果 mtouch 未能启动模拟器,则会报告此错误。 有时可能会发生这种情况,因为已经有一个过时或死模拟器进程正在运行。

    Unix 命令行上发出的以下命令可用于终止停滞的模拟器进程:

    $ launchctl list|grep UIKitApplication|awk '{print $3}'|xargs launchctl remove
    

    MT1009:无法将程序集“*”复制到“*”:*

    这是某些版本的 Xamarin.iOS 中的已知问题。

    如果发生这种情况,请尝试以下解决方法:

    sudo chmod 0644 /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono/*/*.mdb
    

    但是,由于此问题已在最新版本的 Xamarin.iOS 中解决,因此请在 github 上提交一个新问题,并提供完整的版本信息和生成日志输出。

    MT1010:无法加载程序集“*”:*

    MT1011:无法添加缺少的资源文件:“*”

    MT1012:无法列出设备上的应用“*”:*

    MT1013:依赖项跟踪错误:没有要比较的文件。 请使用测试用例在 上 http://bugzilla.xamarin.com 提交 bug 报告。

    这表示 Xamarin.iOS 中存在 bug。 请使用测试用例在 github 上提交新问题。

    MT1014:无法重复使用缓存版本的“*”: *。

    MT1015:无法创建可执行文件“*”:*

    MT1015:无法创建可执行文件“*”:*

    MT1016:无法创建 NOTICE 文件,因为已存在具有相同名称的目录。

    从项目中删除目录 NOTICE

    MT1017:无法创建 NOTICE 文件:*。

    MT1018:应用程序未通过代码签名检查,无法在设备“*”上安装。 检查证书、预配配置文件和捆绑 ID。 可能设备不是所选预配配置文件的一部分, (错误:0xe8008015) 。

    MT1019:应用程序具有当前预配配置文件不支持的权利,并且无法安装在设备“*”上。 有关 (错误的详细信息,请检查 iOS 设备日志:0xe8008016) 。

    在以下情况下可能发生这种问题:

  • 应用程序具有当前预配配置文件不支持的权利。 可能的解决方法:
    • 指定支持应用程序所需权利的不同预配配置文件。
    • 删除当前预配配置文件中不支持的权利。
    • 你尝试部署到的设备未包含在你正在使用的预配配置文件中。 可能的解决方法:
      • 从 Xcode 中的模板创建新应用,选择相同的预配配置文件,然后部署到同一设备。 有时 Xcode 可以使用新设备自动刷新预配配置文件, (在其他情况下,Xcode 会询问你) 该怎么做。 - 转到 iOS 开发人员中心,使用新设备更新预配配置文件,然后将更新的预配配置文件下载到计算机。
      • 在大多数情况下,有关故障的详细信息将输出到 iOS 设备日志,这有助于诊断问题。

        MT1020:无法在设备“*”上启动应用程序“*”:*

        MT1021:无法将文件“*”复制到“*”: {2}

        无法复制文件。 复制操作中的错误消息包含有关错误的详细信息。

        MT1022:无法将目录“*”复制到“*”: {2}

        无法复制目录。 复制操作中的错误消息包含有关错误的详细信息。

        MT1023:无法与设备通信以查找应用程序“*”:*

        尝试在设备上查找应用程序时出错。

        要尝试解决此问题的事项:

      • 从设备中删除应用程序,然后重试。
      • 断开设备连接并重新连接。
      • 重新启动设备。
      • 重新启动 Mac。
      • MT1024:无法在设备“*”上验证应用程序签名。 请确保预配配置文件已安装且未过期 (错误:0xe8008017) 。

        设备拒绝了应用程序安装,因为无法验证签名。

        请确保预配配置文件已安装且未过期。

        MT1025:无法列出设备上的崩溃报告 *。

        尝试列出设备上的故障报告时出错。

        要尝试解决此问题的事项:

      • 从设备中删除应用程序,然后重试。
      • 断开设备连接并重新连接。
      • 重新启动设备。
      • 重新启动 Mac。
      • 将设备与 iTunes 同步 (这将删除设备) 的任何故障报告。
      • MT1026:无法从设备下载崩溃报告 * 。

        尝试从设备下载故障报告时出错。

        要尝试解决此问题的事项:

      • 从设备中删除应用程序,然后重试。
      • 断开设备连接并重新连接。
      • 重新启动设备。
      • 重新启动 Mac。
      • 将设备与 iTunes 同步 (这将删除设备) 的任何故障报告。
      • MT1027:无法使用 Xcode 7+ 在具有 iOS * 的设备上启动应用程序 (Xcode 7 仅支持 iOS 6+) 。

        无法在 iOS 版本低于 6.0 的设备上使用 Xcode 7+ 启动应用程序。

        请使用较旧版本的 Xcode,或手动点击应用以启动它。

        MT1028:设备规范“*”无效。 预期的“ios”、“watchos”或“all”。

        使用 --device 传递的设备规范无效。 有效值为:“ios”、“watchos”或“all”。

        MT1029:在指定的目录中找不到应用程序: *

        传递给 --launchdev 的应用程序路径不存在。 请指定有效的应用捆绑包。

        MT1030:已弃用捆绑标识符在设备上启动应用程序。 请将完整路径传递给要启动的捆绑包。

        建议将路径传递给要在设备上启动的应用,而不仅仅是捆绑 ID。

        MT1031:无法启动设备“*”上的应用“*”,因为设备已锁定。 请解锁设备,然后重试。

        请解锁设备,然后重试。

        MT1032:此应用程序可执行文件可能太大 (*) 无法在设备上执行。 如果启用了 bitcode,你可能想要将其禁用以进行开发,则只需将应用程序提交到 Apple。

        MT1033:无法从设备“*”卸载应用程序“*”:*

        MT1035:不能包含不同版本的框架“{name}”

        无法与同一框架的不同版本链接。

        当扩展引用与容器应用不同的框架版本时,通常会发生这种情况, (可能通过第三方绑定程序集) 。

        出现此错误后,将有多个 MT1036 错误,其中列出了每个不同框架的路径。

        此错误仅与 MT1036 一起报告。 有关详细信息 ,请参阅 MT1036

        MT11xx:调试服务

        MT1101:无法启动应用

        MT1102:无法附加到应用 (将其终止) : *

        MT1103:无法分离

        MT1104:无法发送数据包: *

        MT1105:意外响应类型

        MT1106:无法获取设备上的应用程序列表:请求超时。

        MT1107:应用程序无法启动:*

        如果设备已锁定,请检查。

        如果要部署企业应用或使用免费预配配置文件,则可能信任开发人员 (此处) 对此进行介绍。

        MT1108:找不到此 XX (YY) 设备的开发人员工具。

        mtouch 中的一些操作要求 DeveloperDiskImage.dmg 文件存在。 此文件是 Xcode 的一部分,通常相对于要基于 的 SDK 位于 中 Xcode.app/Contents/Developer/iPhoneOS.platform/DeviceSupport/VERSION/DeveloperDiskImage.dmg

        发生此错误的原因之一是没有与已连接的设备匹配的 DeveloperDiskImage.dmg。

        MT1109:应用程序无法启动,因为设备已锁定。 请解锁设备,然后重试。

        如果设备已锁定,请检查。

        MT1110:由于 iOS 安全限制,应用程序无法启动。 请确保开发人员受信任。

        如果要部署企业应用或使用免费预配配置文件,则可能信任开发人员 (此处) 对此进行介绍。

        MT1111:应用程序已成功启动,但无法等待应用按请求退出,因为在使用 gdbserver 启动时无法检测到应用终止。

        MT12xx:模拟器

        MT1201:无法加载模拟器:*

        MT1202:模拟器配置无效: *

        MT1203:模拟器规范无效: *

        MT1204:模拟器规范“*”无效:未指定运行时。

        MT1205:模拟器规范“*”无效:未指定设备类型。

        MT1206:找不到模拟器运行时“*”。

        MT1207:找不到模拟器设备类型“*”。

        MT1208:找不到模拟器运行时“*”。

        MT1209:找不到模拟器设备类型“*”。

        MT1210:模拟器规范无效:*,未知密钥“*”

        MT1211:模拟器版本“*”不支持模拟器类型“*”

        MT1212:无法创建类型 = * 且运行时 = *的模拟器版本。

        MT1213:Xcode 4 的模拟器规范无效: *

        MT1214:Xcode 5 的模拟器规范无效: *

        MT1215:指定的 SDK 无效: *

        MT1216:找不到模拟器 UDID“*”。

        MT1217:无法在“*”处加载应用捆绑包。

        MT1218:在应用“*”处找不到捆绑标识符。

        MT1219:找不到“*”的模拟器。

        MT1220:找不到设备“*”的最新模拟器运行时。

        这通常表示 Xcode 存在问题。

        尝试解决此问题的事项:

      • 在 Xcode 中使用模拟器一次。
      • 使用 --sdk 版本传递显式 SDK <版本>。
      • 重新安装 Xcode。
      • MT1221:找不到 WatchOS 模拟器“*”的配对 iPhone 模拟器。

        在 WatchOS 模拟器中启动 WatchOS 应用时,还必须有配对的 iOS 模拟器。

        可以使用 Xcode 的设备 UI (菜单窗口 -> 设备) 将监视模拟器与 iOS 模拟器配对。

        MT13xx:[LinkWith]

        MT1301:本机库 * (*) 被忽略,因为它与当前生成体系结构 () (*)

        MT1302:无法从“+”中提取本机库“*”。 请确保本机库正确嵌入托管程序集 (如果程序集是使用绑定项目生成的,则本机库必须包含在项目中,并且其生成操作必须是“ObjcBindingNativeLibrary”) 。

        MT1303:无法从“*”解压缩本机框架“*”。 有关本机“zip”命令的详细信息,请查看生成日志。

        无法从绑定库解压缩指定的本机框架。

        有关本机“zip”命令中的此失败的详细信息,请查看 bulid 日志。

        MT1304:* 中的嵌入框架“*”无效:它不包含 Info.plist。

        指定的嵌入框架不包含 Info.plist,因此不是有效的框架。

        请确保框架有效。

        MT1305:绑定库“*”包含用户框架 (*) ,但嵌入式用户框架需要 iOS 8.0, (当前部署目标为 *) 。 请将 Info.plist 文件中的部署目标至少设置为 8.0。

        指定的绑定库包含嵌入框架,但 Xamarin.iOS 仅支持 iOS 8.0 或更高版本上的嵌入式框架。

        请将 Info.plist 文件中的部署目标至少设置为 8.0 以解决此错误 (,或者不使用嵌入框架) 。

        MT14xx:故障报告

        MT1400:无法打开故障报告服务:AFCConnectionOpen 返回 *

        尝试从设备访问故障报告时出错。

        要尝试解决此问题的事项:

      • 从设备中删除应用程序,然后重试。
      • 断开设备的连接,然后重新连接。
      • 重新启动设备。
      • 重新启动 Mac。
      • 将设备与 iTunes 同步 (这将删除设备) 的任何故障报告。
      • MT1401:无法关闭故障报告服务:AFCConnectionClose 已返回 *

        尝试从设备访问故障报告时出错。

        要尝试解决此问题的事项:

      • 从设备中删除应用程序,然后重试。
      • 断开设备的连接,然后重新连接。
      • 重新启动设备。
      • 重新启动 Mac。
      • 将设备与 iTunes 同步 (这将删除设备) 的任何故障报告。
      • MT1402:无法读取 *的文件信息:AFCFileInfoOpen 返回 *

        尝试从设备访问故障报告时出错。

        要尝试解决此问题的事项:

      • 从设备中删除应用程序,然后重试。
      • 断开设备的连接,然后重新连接。
      • 重新启动设备。
      • 重新启动 Mac。
      • 将设备与 iTunes 同步 (这将删除设备) 的任何故障报告。
      • MT1403:无法读取故障报告:AFCDirectoryOpen (*返回) :*

        尝试从设备访问故障报告时出错。

        要尝试解决此问题的事项:

      • 从设备中删除应用程序,然后重试。
      • 断开设备的连接,然后重新连接。
      • 重新启动设备。
      • 重新启动 Mac。
      • 将设备与 iTunes 同步 (这将删除设备) 的任何故障报告。
      • MT1404:无法读取故障报告:AFCFileRefOpen (*返回) :*

        尝试从设备访问故障报告时出错。

        要尝试解决此问题的事项:

      • 从设备中删除应用程序,然后重试。
      • 断开设备的连接,然后重新连接。
      • 重新启动设备。
      • 重新启动 Mac。
      • 将设备与 iTunes 同步 (这将删除设备) 的任何故障报告。
      • MT1405:无法读取故障报告:AFCFileRefRead (*返回) :*

        尝试从设备访问故障报告时出错。

        要尝试解决此问题的事项:

      • 从设备中删除应用程序,然后重试。
      • 断开设备的连接,然后重新连接。
      • 重新启动设备。
      • 重新启动 Mac。
      • 将设备与 iTunes 同步 (这将删除设备) 的任何故障报告。
      • MT1406:无法列出故障报告:AFCDirectoryOpen (*返回) :*

        尝试从设备访问故障报告时出错。

        要尝试解决此问题的事项:

      • 从设备中删除应用程序,然后重试。
      • 断开设备的连接,然后重新连接。
      • 重新启动设备。
      • 重新启动 Mac。
      • 将设备与 iTunes 同步 (这将删除设备) 的任何故障报告。
      • MT16xx:MachO

        MT1600:不是 Mach-O 动态库 (未知标头“0x*”) :*。

        处理有问题的动态库时出错。

        请确保动态库是有效的 Mach-O 动态库。

        可以使用终端中的 file 命令验证库的格式:

        file -arch all -l /path/to/library.dylib
        

        MT1601:不是静态库 (未知标头“*”) :*。

        处理有问题的静态库时出错。

        请确保静态库是有效的 Mach-O 静态库。

        可以使用终端中的 file 命令验证库的格式:

        file -arch all -l /path/to/library.a
        

        MT1602:不是 Mach-O 动态库 (未知标头“0x*”) :*。

        处理有问题的动态库时出错。

        请确保动态库是有效的 Mach-O 动态库。

        可以使用终端中的 file 命令验证库的格式:

        file -arch all -l /path/to/library.dylib
        

        MT1603:*中位置 * 处的胖输入格式未知。

        处理有问题的胖存档时出错。

        请确保 fat 存档有效。

        可以使用终端中的 file 命令验证胖存档的格式:

        file -arch all -l /path/to/file
        

        MT1604:* 类型的文件不是 (*) 的 MachO 文件。

        处理有问题的 MachO 文件时出错。

        请确保该文件是有效的 Mach-O 动态库。

        可以使用终端中的 file 命令验证文件格式:

        file -arch all -l /path/to/file
        

        MT2xxx:链接器错误消息

        此错误意味着托管链接器遇到意外错误(例如异常),并且无法完成或保存正在处理的程序集。 有关确切错误的详细信息将包含在生成日志中,例如

        error MT2001: Could not link assemblies.
            Method: `System.Void Todo.TodoListPageCS/<<-ctor>b__1_0>d::SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)`
            Assembly: `QuickTodo, Version=1.0.6297.28241, Culture=neutral, PublicKeyToken=null`
        Reason: Value cannot be null.
        Parameter name: instruction
        

        针对此类问题提交 bug 报告非常重要。 在大多数情况下,可以在发布正确的修补程序之前提供解决方法。 上述信息与测试用例和/或程序集二进制) 一起 (至关重要。

        MT2002:无法解析引用:*

        MT2003:由于禁用链接,将忽略选项“*”

        MT2004:找不到额外的链接器定义文件“*”。

        MT2005:无法分析“*”的定义。

        MT2006:无法从*加载mscorlib.dll。 请重新安装 Xamarin.iOS。

        这通常表示 Xamarin.iOS 安装存在问题。 请尝试重新安装 Xamarin.iOS。

        MT2010:未知的 HttpMessageHandler *。 有效值为 httpClientHandler (默认) 、CFNetworkHandler 或 NSUrlSessionHandler

        MT2011:未知的 TlsProvider *。 有效值为 default 或 appletls。

        给定 的值 tls-provider= 不是有效的 TLS (传输层安全性) 提供程序。

        defaultappletls 是唯一有效的值,并且都表示相同的选项,即使用本机 Apple TLS API 提供 SSL/TLS 支持。

        MT2015:适用于 watchOS 的 HttpMessageHandler * 无效。 唯一有效的值为 NSUrlSessionHandler。

        这是由于项目文件指定的 HttpMessageHandler 无效而出现的警告。

        早期版本的预览工具在项目文件中默认生成无效值。

        若要修复此警告,请在文本编辑器中打开项目文件,并从 XML 中删除所有 HttpMessageHandler 节点。

        MT2016:TlsProvider legacy 选项无效。 将使用唯一有效的值 appletls

        提供程序 legacy (仅限完全托管的 SSLv3/TLSv1 提供程序)不再随 Xamarin.iOS 一起提供。 使用旧提供程序,现在使用较 appletls 新的提供程序生成的项目。

        若要修复此警告,请在文本编辑器中打开项目文件,并从 XML 中删除所有“MtouchTlsProvider”节点。

        MT2017:无法处理 XML 说明。

        这意味着提供的 自定义 XML 链接器配置文件 存在错误,请查看文件。

        MT2018:程序集“*”从两个不同的位置引用:“*”和“*”。

        错误消息中提到的程序集是从多个位置加载的。 请确保始终使用同一版本的程序集。

        MT2019:无法加载根程序集“*”

        无法加载根程序集。 请验证错误消息中的路径是否引用现有文件,以及它是有效的 .NET 程序集。

        MT202x:绑定优化器处理 ...失败。

        尝试优化生成的绑定代码时发生意外情况。 导致问题的元素在错误消息中命名。 若要解决此问题,需要在 github 上的新问题中提供名为 (或包含名为) 的类型或方法的程序集,以及 (启用详细度的完整生成日志,例如 -v -v -v -v ,在 ) 的其他 mtouch 参数 中。

        最后一位数字 x 为:

      • 0 程序集名称的 ;
      • 1 表示类型名称;
      • 3 方法名称的 ;
      • MT2030:删除用户资源处理 ...失败。

        尝试删除用户资源时发生意外情况。 导致问题的程序集在错误消息中命名。 若要解决此问题,需要在 github 上的新问题中提供程序集,以及启用详细程度的完整生成日志 (,即 -v -v -v -v) 的其他 mtouch 参数 中。

        用户资源是包含在程序集中的文件 (作为资源) ,需要在生成时提取这些资源来创建应用程序包。 这包括:

      • __monotouch_content_*__monotouch_pages_* 资源;以及
      • 嵌入在绑定程序集中的本机库;
      • MT2040:默认 HttpMessageHandler setter 未能处理 ...

        尝试为应用程序设置默认值 HttpMessageHandler 时发生意外情况。 请在 github 上提交新问题以及启用了详细性的完整生成日志 (,即 -v -v -v -v) 的其他 mtouch 参数 中。

        MT2050:代码删除器处理 ...失败。

        尝试从应用程序随附的 BCL 中删除代码时发生意外情况。 请在 github 上提交新问题以及启用了详细性的完整生成日志 (,即 -v -v -v -v) 的其他 mtouch 参数 中。

        MT2060:密封器处理 ...失败。

        尝试将类型或方法密封 (最终) 或取消虚拟化某些方法时发生意外情况。 导致问题的程序集在错误消息中命名。 若要解决此问题,需要在 github 上的新问题中提供程序集,以及启用详细程度的完整生成日志 (,即 -v -v -v -v) 的其他 mtouch 参数 中。

        MT2070:元数据化简器处理 ...失败。

        尝试减少应用程序中的元数据时发生意外情况。 导致问题的程序集在错误消息中命名。 若要解决此问题,需要在 github 上的新问题中提供程序集,以及启用详细程度的完整生成日志 (,即 -v -v -v -v) 的其他 mtouch 参数 中。

        MT2080:MarkNSObjects 处理 ...失败。

        尝试标记 NSObject 应用程序中的子类时发生意外情况。 导致问题的程序集在错误消息中命名。 若要解决此问题,需要在 github 上的新问题中提供程序集,以及启用详细程度的完整生成日志 (,即 -v -v -v -v) 的其他 mtouch 参数 中。

        MT2090:Inliner 处理 ...失败。

        尝试从应用程序内联代码时发生意外情况。 导致问题的程序集在错误消息中命名。 若要解决此问题,需要在 github 上的新问题中提供程序集,以及启用详细性的完整生成日志 (,即 -v -v -v -v附加 mtouch 参数) 中。

        MT2100:智能枚举转换保留器处理 ...失败。

        尝试从应用程序标记智能枚举的转换方法时发生意外情况。 导致问题的程序集在错误消息中命名。 若要解决此问题,需要在 github 上的新问题中提供程序集,以及启用详细性的完整生成日志 (,即 -v -v -v -v附加 mtouch 参数) 中。

        MT2101:无法解析从“*”中方法“*”引用的引用“*”。

        处理错误消息中提到的方法时遇到无效的程序集引用。

        导致问题的程序集在错误消息中命名。 若要解决此问题,需要在 github 上的新问题中提供程序集,以及启用详细程度的完整生成日志 (,即 -v -v -v -v) 的其他 mtouch 参数 中。

        MT2102:处理程序集“*”中方法“*”时出错:*

        尝试标记错误消息中提到的方法时发生意外情况。

        导致问题的程序集在错误消息中命名。 若要解决此问题,需要在 github 上的新问题中提供程序集,以及启用详细程度的完整生成日志 (,即 -v -v -v -v) 的其他 mtouch 参数 中。

        MT2103:处理程序集“*”时出错:*

        处理程序集时发生意外错误。

        导致问题的程序集在错误消息中命名。 若要解决此问题,需要在 github 上的新问题中提供程序集,以及启用详细程度的完整生成日志 (,即 -v -v -v -v) 的其他 mtouch 参数 中。

        链接器无法处理混合模式程序集。

        有关 混合模式程序集的详细信息,请参阅混合 (本机和托管) 程序集。

        MT3xxx:AOT 错误消息

        MT3001:无法对程序集“*”进行 AOT

        这通常表示 AOT 编译器存在 bug。 请使用可用于重现错误的项目在 github 上提交新问题。

        有时,可以通过在项目的 iOS 生成选项中禁用增量生成来解决此问题, (但它仍然是一个 bug,因此请) 报告它。

        MT3002:AOT 限制:方法“*”必须是静态的,因为它使用 [MonoPInvokeCallback] 进行修饰。 请参阅 developer.xamarin.com/guides/ios/advanced_topics/limitations/#Reverse_Callbacks

        此错误消息来自 AOT 编译器。

        MT3003:冲突 --debug 和 --llvm 选项。 软调试已禁用。

        启用 LLVM 后,不支持调试。 如果需要调试应用,请先禁用 LLVM。

        MT3004:无法对程序集“*”进行 AOT,因为它不存在。

        MT3005:找不到程序集“*”的依赖项“*”。 请查看项目的引用。

        当程序集引用平台程序集的另一个版本 (通常为 .NET 4 版本的 mscorlib.dll) 时,通常会发生这种情况。

        这不受支持,并且可能无法正确生成或执行, (程序集可能使用 .NET 4 版本的 API,mscorlib.dll Xamarin.iOS 版本没有) 。

        MT3006:无法计算项目的完整依赖项映射。 这将导致生成时间变慢,因为 Xamarin.iOS 无法正确检测需要重新生成的内容 (以及不需要重新生成的内容) 。 有关更多详细信息,请查看前面的警告。

        正确生成或执行 (程序集可能使用 Xamarin.iOS 版本没有) 的 .NET 4 版本的mscorlib.dll API。

        MT3007:启用 llvm 后,不会加载调试信息文件 (*.mdb) 。

        MT3008:位码支持需要使用 LLVM AOT 后端 (--llvm)

        位码支持需要使用 LLVM AOT 后端 (-llvm) 。

        禁用 Bitcode 支持或启用 LLVM。

        MT4xxx:代码生成错误消息

        MT40xx:主

        MT4001:无法将main模板扩展为 *

        生成 main.m时出错。 请在 github 上提交新问题。

        MT4002:无法编译 P/Invoke 方法生成的代码。 请在 上提交 bug 报告 http://bugzilla.xamarin.com

        未能为 P/Invoke 方法编译生成的代码。 请在 github 上提交新问题。

        MT41xx: Registrar

        MT4101:无法 registrar 为 类型 *生成签名。

        在导出的 API 中找到一个类型,运行时不知道该类型如何封送到/从 Objective-C中封送。

        如果你认为 Xamarin.iOS 应支持该类型,请在 github 上提交增强请求。

        MT4102:在registrar方法 *的签名中发现无效类型*。 请改用 *

        目前,只有一种类型:System.DateTime 才会发生这种情况。 请改用 Objective-C 等效 (NSDate) 。

        MT4103:在registrar方法*的签名中发现无效类型*:该类型实现 INativeObject,但没有采用两个 (IntPtr、bool) 参数的构造函数

        当 在 registrar 签名中遇到具有上述特征的类型时,会发生此情况。 registrar可能需要创建类型的新实例,在这种情况下,它需要一个具有 (IntPtr、bool) 签名的构造函数 - 第一个参数 (IntPtr) 指定托管句柄,而第二个参数(如果调用方将本机句柄的所有权交接 (如果此值为 false,则将对对象) 调用“保留”。

        MT4104:无法registrar封送方法 *的签名中类型的*返回值。

        在导出的 API 中找到一个类型,运行时不知道该类型如何封送到/从 Objective-C中封送。

        如果你认为 Xamarin.iOS 应支持该类型,请在 github 上提交增强请求。

        MT4105:registrar无法封送方法 *的签名中类型*为 的参数。

        如果你认为 Xamarin.iOS 应支持该类型,请在 github 上提交增强请求。

        MT4106:无法registrar封送方法 *的签名中结构的*返回值。

        在导出的 API 中找到一个类型,运行时不知道该类型如何封送到/从 Objective-C中封送。

        如果你认为 Xamarin.iOS 应支持该类型,请在 github 上提交增强请求。

        MT4107:无法registrar封送方法 +的签名中类型*为 的参数。

        在导出的 API 中找到一个类型,运行时不知道该类型如何封送到/从 Objective-C中封送。

        如果你认为 Xamarin.iOS 应支持该类型,请在 github 上提交增强请求。

        MT4108: registrar 无法获取托管类型 的 ObjectiveC 类型 *

        在导出的 API 中找到一个类型,运行时不知道该类型如何封送到/从 Objective-C中封送。

        如果你认为 Xamarin.iOS 应支持该类型,请在 github 上提交增强请求。

        MT4109:无法编译生成的 registrar 代码。 请在 上提交 bug 报告 http://bugzilla.xamarin.com

        未能编译 为 registrar生成的代码。 生成日志将包含本机编译器的输出,解释代码不编译的原因。

        这始终是 Xamarin.iOS 中的 bug;请使用您的项目或测试用例在 github 上提交新问题。

        MT4110:无法registrar封送方法 *的签名中类型*为 的 out 参数。

        MT4111:无法在registrar方法 *中为 类型*生成签名。

        MT4112: registrar 找到无效类型 *。 不支持向 Objective-C 注册泛型类型,并且可能会导致随机行为和/或崩溃 (,以便与旧版 Xamarin.iOS 向后兼容,可以在项目的 iOS 生成选项页中将 作为附加的 mtouch 参数传递 --unsupported--enable-generics-in-registrar 来忽略此错误。有关详细信息 ) registrar ,请参阅 developer.xamarin.com/guides/ios/advanced_topics/。

        MT4113: registrar 找到了一个泛型方法:“*.*”。 不支持导出泛型方法,这将导致随机行为和/或崩溃。

        MT4114:方法“*.*”的 中 registrar 出现意外错误 - 请在 上提交 bug 报告 http://bugzilla.xamarin.com

        MT4116:无法注册程序集“*”:*

        MT4117:在 registrar 方法“*.*”中发现签名不匹配 - 选择器指示方法采用 * 参数,而托管方法具有 * 参数。

        MT4118:无法将两个托管类型注册 (“*”和“*”) 的本机名称 (“*”) 。

        MT4119:无法注册成员“*.*”的选择器“*”,因为该选择器已在其他成员上注册。

        MT4120:在 registrar 字段“*.*”中发现未知字段类型“*”。 请在 上提交 bug 报告 http://bugzilla.xamarin.com

        此错误表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。

        MT4121:使用帐户框架时,无法使用 GCC/G++ 从静态 registrar 编译生成的代码, (编译期间使用的 Apple 提供的头文件需要 Clang) 。 使用 Clang (--compiler:clang) 或动态 registrar (--registrar:d ynamic) 。

        MT4122:无法使用 中提供的 Clang 编译器 SDK 用于在应用程序中存在非 ASCII 类型名称 ('*') 时从静态 registrar 编译生成的代码。 使用 GCC/G++ (--compiler:gcc|g++) 、动态 registrar (--registrar:d ynamic) 或更新的 SDK。

        MT4123:variadic 函数“*”中可变参数的类型必须为 System.IntPtr。

        MT4124:在“*”上找到无效的 * 。 请在 上提交 bug 报告 http://bugzilla.xamarin.com

        此错误表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。

        MT4125:在 registrar 方法“*”的签名中发现无效类型“*”:接口必须具有指定其包装类型的 Protocol 属性。

        MT4126:无法注册两个托管协议, (“*”和“*”) 的本机名称 (“*”) 。

        MT4127:无法为实现“*”) 的方法“*” (注册多个接口方法。

        MT4128:在 registrar 方法“*”中发现无效的泛型参数类型“*”。 泛型参数必须具有“NSObject”约束。

        MT4129:在 registrar 方法“*”中发现无效的泛型返回类型“*”。 泛型返回类型必须具有“NSObject”约束。

        MT4130: registrar 无法导出泛型类中的静态方法 ('*') 。

        MT4131: registrar 无法导出泛型类中的静态属性 ('*.*') 。

        MT4132:在 registrar 属性“*”中发现无效的泛型返回类型“*”。 返回类型必须具有“NSObject”约束。

        MT4133:无法从 Objective-C 构造类型“*”的实例,因为类型是泛型的。 [运行时异常]

        MT4134:应用程序使用“*”框架,该框架未包含在用于生成应用的 iOS SDK 中, (此框架是在 iOS 中引入的,而你使用 iOS * SDK.) 请在应用的 iOS 生成选项中选择较新的 SDK。

        MT4135:成员“*.*”具有未指定选择器的 Export 属性。 需要选择器。

        MT4136: registrar 无法在方法“*.*”中封送参数“*”的参数类型“*”。

        MT4138: registrar 无法封送属性“*.*”的属性类型“*”。

        MT4139: registrar 无法封送属性“*.*”的属性类型“*”。 具有 [Connect] 属性的属性必须具有 NSObject (或 NSObject) 的子类。

        MT4140:在 registrar 方法“*.*”中发现签名不匹配项 - 选择器指示可变参数方法采用 * 参数,而托管方法具有 * 参数。

        MT4141:无法在成员“*”上注册选择器“*”,因为 Xamarin.iOS 隐式注册此选择器。

        在对框架类型进行子类化并尝试实现“retain”、“release”或“dealloc”方法时,将发生这种情况:

        class MyNSObject : NSObject
          [Export ("retain")]
          new void Retain () {}
          [Export ("release")]
          new void Release () {}
          [Export ("dealloc")]
          new void Dealloc () {}
        

        但是,如果类不是框架类型的第一个子类,则可以重写这些方法:

        class MyNSObject : NSObject
        class MyCustomNSObject : MyNSObject
          [Export ("retain")]
          new void Retain () {}
          [Export ("release")]
          new void Release () {}
          [Export ("dealloc")]
          new void Dealloc () {}
        

        在这种情况下,Xamarin.iOS 将覆盖 retainrelease 类上的 MyNSObjectdealloc ,并且不存在冲突。

        MT4142:无法注册类型“*”。

        MT4143:无法注册 ObjectiveC 类“*”,它似乎派生自任何已知的 ObjectiveC 类 (包括 NSObject) 。

        MT4144:无法注册方法“*”,因为它没有关联的蹦床。 请在 上提交 bug 报告 http://bugzilla.xamarin.com

        这表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。

        MT4145:无效的枚举“*”:具有 [Native] 属性的枚举必须具有“long”或“ulong”的基础枚举类型。

        MT4146:类“*” (“*”) 上的属性的 Name 参数 Registrar 包含无效字符:“*” (*) 。

        Objectice-C 类的名称不能包含空格,这意味着 Register 相应托管类上的 属性不能有参数 Name 也不能包含空格。

        请验证 Register 错误消息中提到的托管类上的 属性是否不包含任何空格。

        MT4147:在使用动态 registrar时检测到从 JSExport 协议继承的协议。 无法动态将协议导出到 JavaScriptCore;必须使用静态 registrar , (将 '--registrar:static 添加到项目的 iOS 生成选项中的其他 mtouch 参数,以选择静态 registrar) 。

        MT4148: registrar 找到了一个泛型协议:“*”。 不支持导出泛型协议。

        MT4149:无法注册方法“*.*”,因为第一个参数 ('*') 的类型与类别类型 ('*') 不匹配。

        MT4150:无法注册类型“*”,因为其 Category 属性中的 Type 属性 (“*”) 不继承自 NSObject。

        MT4151:无法注册类型“*”,因为未设置其 Category 属性中的 Type 属性。

        MT4152:无法将类型“*”注册为类别,因为它实现了 INativeObject 或子类 NSObject。

        MT4153:无法将类型“*”注册为类别,因为它是泛型类型。

        MT4154:无法将方法“*”注册为类别方法,因为它是泛型方法。

        MT4155:无法将方法“*”注册到选择器“*”作为“*”上的类别方法,因为 Objective-C 已具有此选择器的实现。

        MT4156:无法 (“*”) 注册同一本机名称 (“*”和“*”) 两个类别。

        MT4157:无法注册类别方法“*”,因为 (至少需要一个参数,并且其类型必须与类别类型“*”匹配)

        MT4158:无法在类别 * 中注册构造函数 *,因为不支持类别中的构造函数。

        MT4159:无法将方法“*”注册为类别方法,因为类别方法必须是静态的。

        MT4160:在“*”的选择器“*”中找到 (*) 字符“*”无效。

        MT4161: registrar 发现不受支持的结构“*”:结构中的所有字段也必须是结构, (类型为“”的字段“*”{2}不是结构) 。

        找到了 registrar 一个包含不受支持的字段的结构。

        向 其公开 Objective-C 的结构中的所有字段也必须是结构, (而不是类) 。

        MT4162: (用作 * {2}) 的类型“*”在 * 中不可用, () * 中引入,请使用更新的 * SDK 生成 (通常使用最新版本的 Xcode 完成。

        找到 registrar 一个类型,该类型未包含在当前 SDK 中。

        请升级 Xcode。

        MT4163: (*) 中的 registrar 内部错误。 请在 以下位置提交 bug 报告 http://bugzilla.xamarin.com

        此错误表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。

        MT4164:无法导出属性“*”,因为其选择器“*”是Objective-C关键字 (keyword) 。 请使用其他名称。

        有问题属性的选择器不是有效的 Objective-C 标识器。

        请使用有效的 Objective-C 标识符作为选择器。

        MT4165: registrar 在任何引用的程序集中都找不到类型“System.Void”。

        此错误很可能表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。

        MT4166:无法注册方法“*”,因为签名包含不是引用类型的类型 (*) 。

        这通常表示 Xamarin.iOS 中的 bug。 请在 github 上提交新问题。

        MT4167:无法注册方法“*”,因为签名包含泛型类型 (*) 与非 NSObject 子类 (*) 。

        这通常表示 Xamarin.iOS 中的 bug。 请在 github 上提交新问题。

        MT4168:无法注册类型“{managed_name}”,Objective-C因为它的名称“{exported_name}”是关键字 (keyword) Objective-C 。 请使用其他名称。

        有 Objective-C 问题的类型的名称不是有效的 Objective-C 标识符。

        请使用有效的 Objective-C 标识符。

        MT4169:无法为 {method}生成 P/Invoke 包装器: {message}

        Xamarin.iOS 无法为上述 生成 P/Invoke 包装器函数。 请检查报告的基本原因错误消息。

        MT4170: registrar 方法 {method} 中的返回值无法从“{managed type}”转换为“{native type}”。

        请参阅错误 MT4172 的说明。

        MT4171:成员 {member} 上的 BindAs 属性无效:BindAs 类型 {type} 不同于属性类型 {type}。

        请确保 BindAs 属性中的类型与其附加到的成员的类型匹配。

        MT4172: registrar 方法 {method} 中参数“{parameter name}”的 无法从“{native type}”转换为“{managed type}”。

        registrar不支持在上述类型之间进行转换。

        如果相关 API 由 Xamarin.iOS 提供,则这是 Xamarin.iOS 中的 bug。 请在 github 上提交新问题。

        如果在为本机库开发绑定项目时遇到这种情况,我们愿意添加对新类型组合的支持。 如果是这种情况,请使用测试用例在 github 上提交增强请求,我们将对其进行评估。

        MT5xxx:GCC 和工具链错误消息

        MT51xx:编译

        MT5101:缺少“*”编译器。 请安装 Xcode“命令行工具”组件

        MT5102:无法组合文件“*”。 请在 以下位置提交 bug 报告 http://bugzilla.xamarin.com

        MT5103:无法编译文件“*”。 请在 以下位置提交 bug 报告 http://bugzilla.xamarin.com

        MT5104:找不到“*”和“*”编译器。 请安装 Xcode“命令行工具”组件

        MT5106:无法 (“*”) 编译文件。 请在 以下位置提交 bug 报告 http://bugzilla.xamarin.com

        这通常表示 Xamarin.iOS 中的 bug;请在 github 上提交新问题。

        MT52xx:链接

        MT5201:本机链接失败。 请查看生成日志和提供给 gcc 的用户标志: *

        MT5202:本机链接失败。 请查看生成日志。

        MT5203:本机链接警告: *

        MT5209:本机链接错误: *

        MT5210:本机链接失败,未定义符号:*。 请验证是否引用了所有必要的框架,并且本机库是否已正确链接在中。

        当本机链接器在某个位置找不到引用的符号时,就会发生这种情况。 发生这种情况的原因有多种:

      • 第三方绑定需要框架,但绑定没有在其 [LinkWith] 属性中指定此框架。 解决方案:
        • 如果你是第三方绑定的作者,或者有权访问其源,请修改绑定的 [LinkWith] 属性以包含它所需的框架:

          [LinkWith ("mylib.a", Frameworks = "SystemConfiguration")]
          
        • 如果无法修改第三方绑定,可以通过将 传递给 -gcc_flags '-framework SystemFramework'mtouch 所需的框架来手动链接, (此操作是通过修改项目的 iOS 生成选项页中的其他 mtouch 参数来完成的。请记住,必须对每个项目配置) 执行此操作。

        • 在某些情况下,托管绑定由多个本机库组成,并且所有库都必须包含在绑定中。 每个绑定项目中可能有多个本机库,因此解决方案只是将所有必需的本机库添加到绑定项目。
        • 托管绑定是指本机库中不存在的本机符号。 这通常发生在绑定存在一段时间,并且在此期间修改了本机代码,以便删除或重命名特定的本机类,而绑定尚未更新。
        • P/Invoke 引用不存在的本机符号。 从 Xamarin.iOS 7.4 开始,将针对这种情况报告 MT5214 错误 (请参阅 MT5214 以获取) 的详细信息。
        • 第三方绑定/库是使用 C++ 生成的,但绑定未在其 [LinkWith] 属性中指定此项。 这通常很容易识别,因为符号是错误 C++ 符号, (一个常见的示例是 __ZNKSt9exception4whatEv) 。
        • 如果你是第三方绑定的作者或有权访问其源,请修改绑定的 [LinkWith] 属性以设置 IsCxx 标志:

          [LinkWith ("mylib.a", IsCxx = true)]
          
        • 如果无法修改第三方绑定,或者手动与第三方库链接,则可以通过将 传递给 -cxx mtouch 来设置等效标志, (可通过修改项目的 iOS 生成选项页中的其他 mtouch 参数来完成此操作。请记住,必须对每个项目配置) 执行此操作。

          MT5211:本机链接失败,未定义的 Objective-C 类:*。 在与应用程序链接的任何库或框架中都找不到符号“*”。

          当本机链接器在某个位置找不到 Objective-C 引用的类时,就会发生这种情况。 发生这种情况的原因有多种:与 MT5210 相同,此外:

        • 第三方绑定绑定协议 Objective-C ,但没有在其 API 定义中使用 属性对其进行批注 [Protocol] 。 解决方案:
          • 添加缺少 [Protocol] 的属性:

            [BaseType (typeof (NSObject))]
            [Protocol] // Add this
            public interface MyProtocol
            

            MT5212:本机链接失败,重复符号:*。

            当本机链接器在所有本机库之间遇到重复的符号时,就会发生这种情况。 在此错误之后,符号每次出现的位置可能存在一个或多个 MT5213 错误。 此错误的可能原因:

          • 同一本机库包含两次。

          • 两个不同的本机库恰好定义了相同的符号。

          • 本机库未正确生成,并且多次包含同一个符号。 可以通过从终端使用以下命令集来确认这一点, (根据要构建的体系结构) 将 i386 替换为 x86_64/armv7/armv7s/arm64:

            # Native libraries are usually fat libraries, containing binary code for
            # several architectures in the same file. First we extract the binary
            # code for the architecture we're interested in.
            lipo libNative.a -thin i386 -output libNative.i386.a
            # Now query the native library for the duplicated symbol.
            nm libNative.i386.a | fgrep 'SYMBOL'
            # You can also list the object files inside the native library.
            # In most cases this will reveal duplicated object files.
            ar -t libNative.i386.a
            

            有几种可能的方法可以解决此问题:

          • 请求本机库的提供程序修复它并提供更新的版本。
          • 请自行修复此问题,方法是删除额外的对象文件, (仅当问题实际上是重复的对象文件)
          • # Find out if the library is a fat library, and which
            # architectures it contains.
            lipo -info libNative.a
            # Extract each architecture (i386/x86_64/armv7/armv7s/arm64) to a separate file
            lipo libNative.a -thin ARCH -output libNative.ARCH.a
            # Extract the object files for the offending architecture
            # This will remove the duplicates by overwriting them
            # (since they have the same filename)
            mkdir -p ARCH
            cd ARCH
            ar -x ../libNative.ARCH.a
            # Reassemble the object files in an .a
            ar -r ../libNative.ARCH.a *.o
            cd ..
            # Reassemble the fat library
            lipo *.a -create -output libNative.a
            
          • 要求链接器删除未使用的代码。 如果满足以下所有条件,Xamarin.iOS 将自动执行此操作:
            • 所有第三方绑定的属性 [LinkWith] 都已启用 SmartLink:

              [assembly: LinkWith ("libNative.a", SmartLink = true)]
              
            • 在项目的 iOS 生成选项) 的附加 mtouch 参数字段中,不会 -gcc_flags 传递给 mtouch (。

            • 还可以直接要求链接器删除未使用的代码,方法是将 添加到 -gcc_flags -dead_strip 项目的 iOS 生成选项中的其他 mtouch 参数。

              此错误仅与 MT5212 一起报告。 有关详细信息,请参阅 MT5212

              MT5214:本机链接失败,未定义符号:*。 此符号引用了托管成员 *。 请验证是否引用了所有必要的框架并链接了本机库。

              当托管代码包含对不存在的本机方法的 P/Invoke 时,将报告此错误。 例如:

              using System.Runtime.InteropServices;
              class MyImports {
                 [DllImport ("__Internal")]
                 public static extern void MyInexistentFunc ();
              

              有几种可能的解决方案:

            • 从源代码中删除有问题的 P/Invoke。
            • 通过将“链接器行为”设置为“所有程序集”) ,为所有程序集启用托管链接器, (在项目的 iOS 生成选项中完成此操作。 这将有效地从应用 (自动删除未使用的所有 P/Invoke,而不是像上一点) 那样手动删除。 缺点是,这会使模拟器的生成速度稍慢一些,如果它使用反射,它可能会破坏你的应用 - 有关链接器的详细信息,可 在此处 找到)
            • 创建包含缺失的本机符号的第二个本机库。 请注意,这只是一种解决方法, (如果你碰巧尝试调用这些函数,你的应用将) 崩溃。
            • MT5215:对“*”的引用可能需要对本机链接器的其他 -framework=XXX 或 -lXXX 指令

              这是一个警告,指示检测到 P/Invoke 引用了相关库,但应用未与其链接。

              MT5216:本机链接失败。*。 请在 上提交 bug 报告 http://bugzilla.xamarin.com

              链接 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>
            • 符号正确,但它是已通过正常方式保留的符号, (某些生成选项会导致动态符号的确切列表) 变化。
            • MT53xx:其他工具

              MT5301:缺少“strip”工具。 请安装 Xcode“命令行工具”组件

              MT5302:缺少“dsymutil”工具。 请安装 Xcode“命令行工具”组件

              MT5303:无法 (dSYM 目录) 生成调试符号。 请查看生成日志。

              在最终的 .app 目录中运行 dsymutil 以创建调试符号时出错。 请查看生成日志以查看 dsymutil 的输出以及如何修复它。

              MT5304:无法去除最终二进制文件。 请查看生成日志。

              运行“strip”工具从应用程序中删除调试信息时出错。

              MT5305:缺少“lipo”工具。 请安装 Xcode“命令行工具”组件

              MT5306:无法创建胖库。 请查看生成日志。

              运行“lipo”工具时出错。 请查看生成日志,查看“lipo”报告的错误。

              MT5307:无法对可执行文件进行签名。 请查看生成日志。

              对应用程序进行签名时出错。 请查看生成日志,查看“codesign”报告的错误。

              MT6xxx:mtouch 内部工具错误消息

              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

              MT7045:无法识别的格式:*。

              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 上提交新问题。

              MT8009:找不到块以委托方法的转换方法 s 参数 #*。 请在 中 http://bugzilla.xamarin.com提交 bug。

              这表示 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 上提交新问题。

              MT8016:无法将委托 转换为方法 的返回值的块,因为输入不是委托,它是 *。 请在 中提交 bug http://bugzilla.xamarin.com

              [DelegateProxy] 讨论方法的 属性无效。

              这通常表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。

              MT8018:内部一致性错误。 请在 上提交 bug 报告 http://bugzilla.xamarin.com

              这表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。

              MT8019:在加载的程序集中找不到程序集 * 。

              这表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。

              MT8020:在程序集 *中找不到带有 MetadataToken * 的模块。

              这表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。

              MT8021:未知的隐式令牌类型:*。

              这表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。

              MT8022:预期令牌引用 * 为 *,但它是 *。 请在 上提交 bug 报告 http://bugzilla.xamarin.com

              这表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。

              MT8023:需要实例对象来构造开放泛型方法的封闭泛型方法: * (令牌引用: *) 。 请在 上提交 bug 报告 http://bugzilla.xamarin.com

              这表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。

              MT8024:找不到智能枚举“{smart_type}”的有效扩展类型。 请在 中提交 bug https://bugzilla.xamarin.com

              这表示 Xamarin.iOS 中存在 bug。 请在 github 上提交新问题。

  •