Xamarin.iOS 错误

MT0xxx:mtouch 错误消息

例如参数、环境、缺少的工具。

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)时,如果 -devname 传递到 mtouch,则会发出此警告。

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

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

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

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

MT0004:新的 refcounting 逻辑也需要启用 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 无效:*。 支持的 API 包括:i386、x86_64、armv7、armv7+llvm、armv7+llvm+thumb2、armv7s+llvm、armv7s+llvm+thumb2、arm64 和 arm64+llvm。

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

MT0016:选项 * 已被弃用。

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

MT0017:应提供根程序集。

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

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 支持泛型。

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

MT0023:应用程序名称“*.exe”与另一个用户程序集冲突。

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

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

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

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

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

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

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

仅当要为模拟器生成时,才支持 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,或者不为 64 位体系结构(ARM64 和/或x86_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 垃圾回收器。 确保没有将 Boehm 指定为垃圾回收器的其他 mtouch 标志。

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

安装较新的 Xcode 版本。

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

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:在默认位置(/应用程序/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:未指定任何 Xcode.app(使用 --sdkroot),使用系统 Xcode,如“xcode-select --print-path”所报告: *

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

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

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

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

每个 Info.plist 都必须有一个可执行文件(使用 CFBundleExecutable 条目),但是应在生成过程中自动生成一个条目。

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

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

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

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

当部署目标至少为 8.0 时,Xamarin.iOS 仅支持嵌入式框架(因为早期版本的 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。

这通常表示 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:GC 必须处于监视OS 应用的协作模式。 请将 --coop:false 参数删除为 mtouch。

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

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

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

最后一个草根解决方案是使用旧版 Xamarin.iOS,即支持项目所需的 SDK。

MT0093:找不到“mlaunch”。

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

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

MT0099:内部错误 *。

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

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

MT0100:程序集生成目标“*”无效。

当 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

此示例尝试创建一个动态库和一个具有相同生成项的框架(MyBinary)。

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

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

例如:

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

此示例尝试生成由两个程序集(和)组成的静态对象MyBinaryAssembly1.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 不支持包含第三方绑定库且编译为 bitcode 的项目中的增量生成。

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

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

不再报告此警告。

MT0111:已启用 Bitcode,因为此版本的 Xamarin.iOS 不支持使用 LLVM 生成 watchOS 项目,而无需启用 bitcode。

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

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

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

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

  • 因为容器应用的部署目标早于 iOS 8.0(它是 *)。

本机代码共享需要 iOS 8.0,因为本机代码共享是使用 iOS 8.0 引入的用户框架实现的。

  • 因为容器应用包括 I18N 程序集 \.

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

  • 因为容器应用具有托管链接器 \.

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

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

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

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

  • 因为 --assembly-build-target 选项在容器应用 \ 和扩展 \之间有所不同。

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

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

  • 因为 I18N 程序集在容器应用 \ 和扩展 \之间有所不同。

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

  • 因为 AOT 编译器的参数在容器应用 \ 和扩展 \之间是不同的。

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

  • 因为 AOT 编译器的其他参数在容器应用 \ 和扩展 \之间是不同的。

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

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

  • 因为未在容器应用中启用或禁用 LLVM, 以及扩展 \.

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

  • 因为托管链接器设置在容器应用 \ 和扩展 \之间是不同的。

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

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

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

  • 因为该扩展具有托管链接器 \.

    对于使用托管链接器自定义 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={LANG}): {exception}

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

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

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

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

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

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

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

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

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

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

触摸文件时发生失败(这是为了确保部分生成正确完成而完成的)。

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

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

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

或者,启用托管 链接器 以删除未使用的 API,包括(在大多数情况下)需要指定库的新 API。 但是,如果项目要求在较新的 SDK 中引入 API,Xcode 提供的 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:依赖项跟踪错误:没有要比较的文件。

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

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

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

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

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

从项目中删除目录 NOTICE

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

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

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

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

  • 应用程序具有当前预配配置文件不支持的权利。 可能的解决方法:
    • 指定支持应用程序所需的权利的不同预配配置文件。
    • 删除当前预配配置文件中不支持的权利。
  • 尝试部署到的设备不包括在正在使用的预配配置文件中。 可能的解决方法:
    • 在 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+)。

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

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

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

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

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

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

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

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

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

请解锁设备,然后重试。

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

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

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

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

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

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

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

MT11xx:调试服务

MT1101:无法启动应用

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

MT1103:无法分离

MT1104:无法发送数据包: *

MT1105:意外响应类型

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

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

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

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

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

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

此错误可能会发生,因为你没有与已连接的设备匹配的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 模拟器“*”的配对 i电话 模拟器。

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

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

MT13xx: [LinkWith]

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

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

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

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

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

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

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

请确保框架有效。

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

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

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

MT14xx:崩溃报告

MT1400:无法打开崩溃报告服务:AFC连接ionOpen 返回 *

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

尝试解决此问题的事项:

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

MT1401:无法关闭崩溃报告服务:AFC连接ionClose 返回 *

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

尝试解决此问题的事项:

  • 从设备中删除应用程序,然后重试。
  • 断开设备的连接,然后重新连接它。
  • 重新启动设备。
  • 重新启动 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 命令验证 fat 存档的格式:

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 *。 有效值为默认值或 appletls。

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

default唯一的有效值和appletls两者都表示相同的选项,即使用本机 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:内联处理失败 ...

尝试从应用程序内联代码时发生意外事件。 导致问题的程序集在错误消息中命名。 为了解决此问题,需要在 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)时,通常会发生这种情况。

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

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

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

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

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

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

禁用 Bitcode 支持或启用 LLVM。

MT4xxx:代码生成错误消息

MT40xx:Main

MT4001:主模板无法扩展为 *

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

MT4002:无法为 P/Invoke 方法编译生成的代码。

无法为 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'retain')将在对象上调用)。

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 代码。

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

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

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

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

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

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

MT4114:方法“*.*”中 registrar 出现意外错误 -

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

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

MT4118:无法使用相同的本机名称('*')注册两种托管类型('*'和'*')。

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

MT4120:在 registrar 字段“*.*”中找到未知字段类型“*”。

此错误指示 Xamarin.iOS 中的 bug。 请在 github提出新问题。

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

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

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

MT4124:在“*”上找到的 *无效。

此错误指示 Xamarin.iOS 中的 bug。 请在 github提出新问题。

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

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 封送属性“*”的属性类型“*”。 具有 [连接] 属性的属性必须具有 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 将重写 retainreleasedealloc 并在类上 MyNSObject 不发生冲突。

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

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

MT4144:无法注册方法“*”,因为它没有关联的电车。

这表示 Xamarin.iOS 中的 bug。 请在 github提出新问题。

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

MT4146:类“*”('*)上属性的名称 Registrar 参数包含无效字符:“*” \.

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

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

MT4147:检测到在使用动态registrar时继承自 J标准版xport 协议的协议。 无法动态将协议导出到 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 \.

此错误指示 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}”是Objective-C关键字 (keyword)。 请使用其他名称。

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在提及类型之间进行转换。

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

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

MT5xxx:GCC 和工具链错误消息

MT51xx:编译

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

MT5102:无法组装文件“*”。

MT5103:无法编译文件“*”。

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

MT5106:无法编译文件“*”。

这通常表示 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 ,但未在其 [Protocol] API 定义中使用属性对其进行批注。 解决 方案:
    • 添加缺少 [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)]
        
      • 不会 -gcc_flags 传递给 mtouch (在项目的 iOS 生成选项的其他 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/Invokes。
  • 为所有程序集启用托管链接器(这是在项目的 iOS 生成选项中完成的,方法是将“链接器行为”设置为“所有程序集”)。 这将有效地删除你未从应用使用的所有 P/Invoke(自动,而不是手动删除上一点)。 缺点是,这将使模拟器生成速度稍慢,如果应用使用反射,可能会中断你的应用 - 有关链接器的详细信息,可在此处找到
  • 创建第二个本机库,其中包含缺少的本机符号。 请注意,这只是一种解决方法(如果你碰巧尝试调用这些函数,你的应用将崩溃)。

MT5215:对“*”的引用可能需要对本机链接器的其他 -framework=XXX 或 -lXXX 指令

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

MT5216:本机链接失败*。

链接 AOT 编译器的输出时,将报告此错误。

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

MT5217:本机链接可能失败,因为链接器命令行太长(* 字符)。

本机链接失败,因此可能会发生这种情况,因为链接器命令太长。

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

通常,Xamarin.iOS 会要求本机链接器使用 -u symbol 链接器标志保留此类符号,但如果存在许多此类符号,整个命令行可能会超过操作系统指定的最大命令行长度。

此类动态符号有一些可能的源:

  • P/Invokes 到静态链接库中的方法(其中 dll 名称位于 __Internal DllImport 属性 [DllImport ("__Internal")]中)。
  • 从绑定项目[Field] (属性)静态链接库中对内存位置的字段引用。
  • Objective-C 在绑定项目中静态链接的库中引用的类(使用增量生成或不使用静态 registrar生成时)。

可能的解决方法:

  • 启用托管链接器(如果可能用于所有程序集,而不是仅 SDK 程序集)。 这可能会删除足够多的动态符号源,以便链接器命令行不超过最大值。
  • 减少 P/Invokes、字段引用和/或 Objective-C 类的数量。
  • 重写动态符号以具有更短的名称。
  • 在项目的 iOS 生成选项中作为附加 mtouch 参数传递 -dlsym:false 。 使用此选项,Xamarin.iOS 将在 AOT 编译的代码中生成本机引用,并且无需要求链接器保留此符号。 但是,这仅适用于设备生成,如果静态库中不存在 P/Invoke 函数,则会导致链接器错误。
  • 作为项目 iOS 生成选项中的其他 mtouch 参数传递 --dynamic-symbol-mode=code 。 使用此选项,Xamarin.iOS 将生成引用这些符号的其他本机代码,而不是要求本机链接器使用命令行参数保留这些符号。 此方法的缺点是,它会稍微增加可执行文件的大小。
  • 通过在项目的 iOS 生成选项中作为附加 mtouch 参数传递--registrar:static来启用静态registrar(对于模拟器生成,因为静态registrar已是设备生成的默认版本)。 静态 registrar 将生成静态引用 Objective-C 类的代码,因此无需请求本机链接器保留此类。
  • 禁用增量生成(对于设备生成)。 启用增量生成后,静态 registrar 生成的代码不会由本机链接器考虑,这意味着 Xamarin.iOS 仍必须要求链接器保留引用 Objective-C 的类。 因此,禁用增量生成将阻止此需求。

MT5218:无法忽略动态符号 {symbol} (--ignore-dynamic-symbol={symbol}),因为它未被检测为动态符号。

命令行参数 --ignore-dynamic-symbol=symbol 已传递,但此符号不是被识别为必须手动保留的动态符号的符号。

这有两个主要原因:

  • 符号名称不正确。
    • 不要在符号名称前面添加下划线。
    • 类的 Objective-C 符号为 OBJC_CLASS_$_<classname>.
  • 符号正确,但它是已按正常方式保留的符号(某些生成选项导致动态符号的确切列表不同)。

MT53xx:其他工具

MT5301:缺少“条带”工具。 请安装 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

在某些情况下,这是一个“本地网络”问题,可以通过添加未知主机 127.0.0.1 MyHost.local/etc/hosts解决此问题。

MT7002:此计算机没有任何网络适配器。 当通过 WiFi 在设备上调试或分析时,这是必需的。

MSBuild 任务:DetectDebugNetworkConfigurationTaskBase

MT7003:应用扩展“*”不包含 Info.plist。

MSBuild 任务:ValidateAppBundleTaskBase

MT7004:应用扩展“*”未指定 CFBundleIdentifier。

MSBuild 任务:ValidateAppBundleTaskBase

MT7005:应用扩展“*”未指定 CFBundleExecutable。

MSBuild 任务:ValidateAppBundleTaskBase

MT7006:应用扩展“*”具有无效的 CFBundleIdentifier \,它不以主应用捆绑包的 CFBundleIdentifier \开头。

MSBuild 任务:ValidateAppBundleTaskBase

MT7007:应用扩展“*”具有 CFBundleIdentifier • 以非法后缀“.key”结尾。

MSBuild 任务:ValidateAppBundleTaskBase

MT7008:应用扩展“*”未指定 CFBundleShortVersionString。

MSBuild 任务:ValidateAppBundleTaskBase

MT7009:应用扩展“*”具有无效 Info.plist:它不包含 N标准版xtension 字典。

MSBuild 任务:ValidateAppBundleTaskBase

MT7010:应用扩展“*”具有无效 Info.plist:N标准版xtension 字典不包含 N标准版xtensionPointIdentifier 值。

MSBuild 任务:ValidateAppBundleTaskBase

MT7011:WatchKit 扩展“*”具有无效 Info.plist:N标准版xtension 字典不包含 N标准版xtensionAttributes 字典。

MSBuild 任务:ValidateAppBundleTaskBase

MT7012:WatchKit 扩展“*”没有完全一个监视应用。

MSBuild 任务:ValidateAppBundleTaskBase

MT7013:WatchKit 扩展“*”具有无效 Info.plist:UIRequiredDeviceCapabilities 必须包含“watch-companion”功能。

MSBuild 任务:ValidateAppBundleTaskBase

MT7014:监视应用“*”不包含 Info.plist。

MSBuild 任务:ValidateAppBundleTaskBase

MT7015:监视应用“*”未指定 CFBundleIdentifier。

MSBuild 任务:ValidateAppBundleTaskBase

MT7016:监视应用“*”具有无效的 CFBundleIdentifier \,它不以主应用捆绑包的 CFBundleIdentifier \开头。

MSBuild 任务:ValidateAppBundleTaskBase

MT7017:监视应用“*”没有有效的 UIDeviceFamily 值。 预期为“Watch (4)”,但发现“* *”。。

MSBuild 任务:ValidateAppBundleTaskBase

MT7018:监视应用“*”未指定 CFBundleExecutable

MSBuild 任务:ValidateAppBundleTaskBase

MT7019:监视应用“*”具有无效的 WKCompanionAppBundleIdentifier 值('*'),它与主应用捆绑包的 CFBundleIdentifier ('*')不匹配。

MSBuild 任务:ValidateAppBundleTaskBase

MT7020:监视应用“*”具有无效 Info.plist:WKWatchKitApp 密钥必须存在且值为“true”。

MSBuild 任务:ValidateAppBundleTaskBase

MT7021:监视应用“*”具有无效 Info.plist:LSRequiresI电话OS 密钥不得存在。

MSBuild 任务:ValidateAppBundleTaskBase

MT7022:监视应用“*”不包含监视扩展。

MSBuild 任务:ValidateAppBundleTaskBase

MT7023:监视扩展“*”不包含 Info.plist。

MSBuild 任务:ValidateAppBundleTaskBase

MT7024:监视扩展“*”未指定 CFBundleIdentifier。

MSBuild 任务:ValidateAppBundleTaskBase

MT7025:监视扩展“*”未指定 CFBundleExecutable。

MSBuild 任务:ValidateAppBundleTaskBase

MT7026:监视扩展“*”具有无效的 CFBundleIdentifier \,它不以主应用捆绑包的 CFBundleIdentifier \开头。

MSBuild 任务:ValidateAppBundleTaskBase

MT7027:监视扩展“*”具有 CFBundleIdentifier • 以非法后缀“.key”结尾。

MSBuild 任务:ValidateAppBundleTaskBase

MT7028:监视扩展“*”具有无效 Info.plist:它不包含 N标准版xtension 字典。

MSBuild 任务:ValidateAppBundleTaskBase

MT7029:监视扩展“*”具有无效 Info.plist:N标准版xtensionPointIdentifier 必须为“com.apple.watchkit”。

MSBuild 任务:ValidateAppBundleTaskBase

MT7030:监视扩展“*”具有无效 Info.plist:N标准版xtension 字典必须包含 N标准版xtensionAttributes。

MSBuild 任务:ValidateAppBundleTaskBase

MT7031:监视扩展“*”具有无效 Info.plist:N标准版xtensionAttributes 字典必须包含 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 值 ('*'),它与 Watch App 的 CFBundleIdentifier ('*')不匹配。

MSBuild 任务:ValidateAppBundleTaskBase

MT7038:监视应用“*”具有无效 Info.plist:WKCompanionAppBundleIdentifier 必须存在,并且必须与主应用捆绑包的 CFBundleIdentifier 匹配。

MSBuild 任务:ValidateAppBundleTaskBase

MT7039:监视应用“*”具有无效 Info.plist:LSRequiresI电话OS 密钥不得存在。

MSBuild 任务:ValidateAppBundleTaskBase

MT7040:应用捆绑 {AppBundlePath} 不包含 Info.plist。

MSBuild 任务:ValidateAppBundleTaskBase

MT7041:主 Info.plist 路径未指定 CFBundleIdentifier。

MSBuild 任务:ValidateAppBundleTaskBase

MT7042:主 Info.plist 路径未指定 CFBundleExecutable。

MSBuild 任务:ValidateAppBundleTaskBase

MT7043:主 Info.plist 路径未指定 CFBundleSupportedPlatforms。

MSBuild 任务:ValidateAppBundleTaskBase

MT7044:主 Info.plist 路径未指定 UIDeviceFamily。

MSBuild 任务:ValidateAppBundleTaskBase

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

MSBuild 任务:PropertyListEditorTaskBase

其中 * 可以是:

  • string
  • array
  • dict
  • 布尔
  • real
  • integer
  • date
  • data

MT7046:添加:条目,*,未正确指定。

MSBuild 任务:PropertyListEditorTaskBase

MT7047:添加:条目,*,包含无效的数组索引。

MSBuild 任务:PropertyListEditorTaskBase

MT7048:添加:* 条目已存在。

MSBuild 任务:PropertyListEditorTaskBase

MT7049:添加:无法向父级添加条目*。

MSBuild 任务:PropertyListEditorTaskBase

MT7050:删除:无法从父级删除条目 *。

MSBuild 任务:PropertyListEditorTaskBase

MT7051:删除:条目,*,包含无效的数组索引。

MSBuild 任务:PropertyListEditorTaskBase

MT7052:删除:条目,*,不存在。

MSBuild 任务:PropertyListEditorTaskBase

MT7053:导入:条目,*,未正确指定。

MSBuild 任务:PropertyListEditorTaskBase

MT7054:导入:条目,*,包含无效的数组索引。

MSBuild 任务:PropertyListEditorTaskBase

MT7055:导入:读取文件时出错:*。

MSBuild 任务:PropertyListEditorTaskBase

MT7056:导入:无法将条目 *添加到父级。

MSBuild 任务:PropertyListEditorTaskBase

MT7057:合并:无法将数组条目添加到听写。

MSBuild 任务:PropertyListEditorTaskBase

MT7058:合并:指定的条目必须是容器。

MSBuild 任务:PropertyListEditorTaskBase

MT7059:合并:条目,*,包含无效的数组索引。

MSBuild 任务:PropertyListEditorTaskBase

MT7060:合并:条目,*,不存在。

MSBuild 任务:PropertyListEditorTaskBase

MT7061:合并:读取文件时出错:*。

MSBuild 任务:PropertyListEditorTaskBase

MT7062:设置:条目、*、未正确指定。

MSBuild 任务:PropertyListEditorTaskBase

MT7063:设置:条目,*,包含无效的数组索引。

MSBuild 任务:PropertyListEditorTaskBase

MT7064:设置:条目、*、不存在。

MSBuild 任务:PropertyListEditorTaskBase

MT7065:未知 PropertyList 编辑器操作:*。

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的加载版本已针对 * 位进行编译,而进程为 * 位。

这表示生成过程中出现问题。 请在 github提出新问题。

MT8009:找不到用于委托方法 的转换方法的块。's 参数 #*.

这表示 API 未正确绑定。 如果这是 Xamarin 公开的 API,请在 github提出新问题。 如果是第三方绑定,请联系供应商。

MT8010:Xamarin 之间的本机类型大小不匹配。[iOS|Mac].dll和执行体系结构。 Xamarin。[iOS|Mac].dll是为 *位生成的,而当前进程是 *位。

这表示生成过程中出现问题。 请在 github提出新问题。

MT8011:找不到方法的返回值的委托以阻止转换属性([DelegateProxy])。

Xamarin.iOS 无法在运行时找到所需的方法(将委托转换为块)。

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

MT8012:方法的返回值的 DelegateProxyAttribute 无效:DelegateType 为 null。

有关方法的 DelegateProxy 属性无效。

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

MT8013:方法的返回值的 DelegateProxyAttribute 无效。:DelegateType ({2}) 指定没有“Handler”字段的类型。

[DelegateProxy]有关方法的属性无效。

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

MT8014:方法返回值的 DelegateProxyAttribute 无效。:DelegateType 的 ({2}) “Handler” 字段为 null。

[DelegateProxy]有关方法的属性无效。

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

MT8015:方法返回值的 DelegateProxyAttribute 无效。:DelegateType 的 “{2}Handler” 字段不是委托,它是 *。

有关方法的 DelegateProxy 属性无效。

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

MT8016:无法将委托转换为阻止方法的返回值,因为输入不是委托,所以它是 *。

[DelegateProxy]有关方法的属性无效。

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

MT8018:内部一致性错误。

这表示 Xamarin.iOS 中的 bug。 请在 github提出新问题。

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

这表示 Xamarin.iOS 中的 bug。 请在 github提出新问题。

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

这表示 Xamarin.iOS 中的 bug。 请在 github提出新问题。

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

这表示 Xamarin.iOS 中的 bug。 请在 github提出新问题。

MT8022:预期令牌引用 * 为 *,但它是 *.。

这表示 Xamarin.iOS 中的 bug。 请在 github提出新问题。

MT8023:构造开放式泛型方法的封闭泛型方法需要实例对象:*(令牌引用:*)。

这表示 Xamarin.iOS 中的 bug。 请在 github提出新问题。

MT8024:找不到智能枚举“{smart_type}”的有效扩展类型。

这表示 Xamarin.iOS 中的 bug。 请在 github提出新问题。