共用方式為


Xamarin.iOS 錯誤

MT0xxx:mtouch 錯誤訊息

例如參數、環境、遺漏工具。

MT0000:非預期的錯誤 - 請在 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 開始,此需求已解除,新的 refcounting 邏輯可以使用 Boehm 和 SGen 垃圾收集行程來啟用。

MT0005:輸出目錄 * 不存在。

請建立目錄。

不再產生此錯誤,如果目錄不存在,mtouch 會自動建立目錄。

MT0006:*沒有 devel 平臺,請使用 --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。

如果已啟用分析(--profiling),則必須啟用 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。

無效的 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 (-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 垃圾收集行程。 請確定沒有其他 mtouch 旗標將 Boehm 指定為垃圾收集行程。

MT0044:--listsim 僅支援 Xcode 6.0 或更新版本。

安裝較新的 Xcode 版本。

MT0045:只有在使用 iOS 8.0 (或更新版本) SDK 時,才支援 --extension。

MT0047:Unified 應用程式的最小部署目標為 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:未指定 Xcode.app (使用 --sdkroot),使用 'xcode-select --print-path' 所回報的系統 Xcode: *

這是參考警告,說明將使用哪些 Xcode,因為未指定任何專案。

MT0062:未指定任何 Xcode.app(使用 --sdkroot 或 'xcode-select --print-path'),請改用預設 Xcode: *

這是參考警告,說明將使用哪些 Xcode,因為未指定任何專案。

MT0063:在擴充功能 * 中找不到可執行檔 *(在其 Info.plist 中沒有 CFBundleExecutable 專案)

每個 Info.plist 都必須有可執行檔(使用 CFBundleExecutable 專案),不過應該在建置期間自動產生專案。

這通常表示 Xamarin.iOS 中的 Bug;請使用測試案例在 github提出新問題。

MT0064:Xamarin.iOS 僅支援內嵌架構與整合專案。

使用整合 API 時,Xamarin.iOS 僅支援內嵌架構;請更新您的專案以使用整合 API。

MT0065:Xamarin.iOS 在部署目標至少為 8.0 時僅支援內嵌架構(目前的部署目標:* 內嵌架構: *)

當部署目標至少為 8.0 時,Xamarin.iOS 僅支援內嵌架構(因為舊版的 iOS 不支援內嵌架構)。

請將專案 Info.plist 中的部署目標更新為 8.0 或更高版本。

MT0066:建置 registrar 元件無效: *

這通常表示 Xamarin.iOS 中的 Bug;請使用測試案例在 github提出新問題。

MT0067:無效 registrar: *

這通常表示 Xamarin.iOS 中的 Bug;請使用測試案例在 github提出新問題。

MT0068:目標 Framework 的值無效:*。

使用 --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。 使用 --bitcode:marker 或 --bitcode:full。

MT0084:模擬器不支援 Bitcode。 建置模擬器時,請勿傳遞 --bitcode。

MT0085:找不到 '*' 的參考。 系統會自動新增它。

MT0086:針對TVOS或 WatchOS 建置時,必須指定目標架構 (--target-framework)。

這表示 Xamarin.iOS 中的 Bug。 請在 github提出新的問題。

MT0087:Boehm GC 不支援累加組建 (--fastdev)。 累加組建將會停用。

MT0088:GC 必須為 watchOS 應用程式的合作模式。 請將 --coop:false 自變數移除至 mtouch。

MT0089:當 GC 啟用合作模式時,『*』 選項無法接受值 『*』。

Xamarin.iOS 需要來自錯誤訊息中指定的 SDK 版本頭檔,才能建置您的應用程式。 修正此錯誤的建議方式是升級 Xcode 以取得必要的 SDK,這將會包含所有必要的頭檔。 如果您已安裝多個版本的 Xcode,或想要在非預設位置使用 Xcode,請務必在 IDE 的喜好設定中設定正確的 Xcode 位置。

可能的替代解決方案是啟用受控連結器。 這將會移除未使用的 API,包括大部分情況下遺漏頭檔的新 API(或不完整)。 不過,如果您的專案使用比 Xcode 提供的 API 還新版 SDK 中引進的 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

此範例嘗試同時建立動態連結庫和具有相同 make 的架構(MyBinary)。

MT0103:靜態物件 '*' 包含一個以上的元件 ('*'),但每個靜態對象都必須與一個元件完全對應。

錯誤訊息中所提及的元件都會編譯成單一靜態物件。 不允許這樣做,每個元件都必須編譯成不同的靜態物件。

例如:

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

這個範例會嘗試建置由兩個元件 (和Assembly2.dll) 組成的靜態物件MyBinaryAssembly1.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 不支援使用 LLVM 建置 watchOS 專案,而不需要啟用 bitcode。

您不需要採取任何動作,此訊息純屬參考。

MT0112:原生程式代碼共用已停用,因為 *

程式代碼共用有多個原因可以停用:

  • 因為容器應用程式的部署目標早於 iOS 8.0 (其為 *))。

原生程式代碼共用需要 iOS 8.0,因為原生程式代碼共用是使用 iOS 8.0 引進的用戶架構來實作。

  • 因為容器應用程式包含I18N元件 。。

如果容器應用程式包含I18N元件,目前不支援原生程式代碼共用。

  • 因為容器應用程式具有Managed連結器的自訂 XML 定義 。

使用 Managed 連結器自訂 XML 定義的項目不支援原生程式代碼共用。

MT0113:延伸模組 '*' 已停用原生程式代碼共享,因為 *。

  • 因為容器應用程式 \ 和延伸模組 \[ 之間的 bitcode 選項不同。

    原生程式代碼共用需要位碼選項符合共用程式碼的專案。

  • 因為 --assembly-build-target 選項在容器應用程式 、 和擴充功能之間不同。

    原生程式代碼共用需要 --assembly-build-target 選項在共用程式代碼的項目之間完全相同。

    如果未在所有項目中啟用或停用累加建置,就會發生此狀況。

  • 因為容器應用程式 \ 和延伸模組 \[I18N 元件\] 不同。

    目前不支援包含I18N元件的延伸模組共用原生程序代碼。

  • 因為 AOT 編譯程式的自變數在容器應用程式、和擴充功能之間不同。

    原生程式代碼共用需要 AOT 編譯程式的自變數在共用程式代碼的專案之間沒有差異。

  • 因為 AOT 編譯程式的其他自變數在容器應用程式 \ 和擴充功能之間不同。

    原生程式代碼共用需要 AOT 編譯程式的自變數在共用程式代碼的專案之間沒有差異。

    如果項目之間「以64位 float 身分執行所有32位浮點數作業」,就會發生這個狀況。

  • 因為容器應用程式中未啟用或停用 LLVM, 和擴充功能 。。。

    原生程式代碼共用需要針對共享程式代碼的所有項目啟用或停用 LLVM。

  • 因為受控連結器設定在容器應用程式 \ 和擴充功能之間不同。

    原生程式代碼共用要求受控連結器設定與共用程式代碼的所有專案相同。

  • 因為 Managed 連結器跳過的元件在容器應用程式 \ 和擴充功能之間不同。

    原生程式代碼共用要求受控連結器設定與共用程式代碼的所有專案相同。

  • 因為延伸模組具有 Managed 連結器的自訂 XML 定義 。。

    使用 Managed 連結器自訂 XML 定義的項目不支援原生程式代碼共用。

  • 因為容器應用程式不會針對 ABI * 建置 (而延伸模組正在為此 ABI 建置時)。

    原生程式代碼共用需要容器應用程式針對所有架構建置任何應用程式延伸模組所建置。

    例如:當擴充功能建置ARM64+ARMv7時,就會發生此情況,但容器應用程式只會建置ARM64。

  • 因為容器應用程式正在建置 ABI *,這與延伸模組的 ABI **不相容。

    原生程式代碼共用需要針對完全相同的 API 建置所有專案。

    例如:當擴充功能建置ARMv7+llvm+thumb2時,就會發生此狀況,但容器應用程式只會建置ARMv7+llvm。

  • 因為容器應用程式正在從 『*』 參考元件 『*』,而延伸模組則參考與 『*』 不同的版本。

    原生程式代碼共用需要所有共用程式碼的專案,所有共用程式代碼的專案都會針對所有元件使用相同的版本。

Xamarin.iOS 專案通常會動態參考原生符號,這表示原生連結器可能會在原生連結程式期間移除這類原生符號,因為原生連結器不會看到使用這些符號。

通常 Xamarin.iOS 會要求原生連結器保留這類符號(使用 -u symbol 連結器旗標),但在編譯 bitcode 時,原生連結器不接受 -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 位置。

或者,啟用 Managed 連結器 以移除未使用的 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:您的應用程式程式代碼簽署檢查失敗,且無法在裝置 『*』 上安裝。 檢查您的憑證、布建配置檔和套件組合標識碼。 可能是您的裝置不屬於所選布建配置檔的一部分(錯誤: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+)。

無法使用 Xcode 7+ 在 iOS 版本低於 6.0 的裝置上啟動應用程式。

請使用舊版 Xcode,或手動點選應用程式以啟動它。

MT1028:裝置規格無效:『*』。 必須是 'ios'、'watchos' 或 'all'。

使用 --device 傳遞的裝置規格無效。 有效值為:'ios'、'watchos' 或 'all'。

MT1029:在指定的目錄找不到應用程式: *

傳遞至 --launchdev 的應用程式路徑不存在。 請指定有效的應用程式套件組合。

MT1030:已淘汰使用套件組合標識符在裝置上啟動應用程式。 請將完整路徑傳遞至套件組合以啟動。

建議將路徑傳遞至應用程式以在裝置上啟動,而不只是套件組合標識碼。

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 相對。

此錯誤可能會發生,因為您沒有符合您所連線裝置的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:無法從 '+' 擷取原生連結庫 '*'。 請確定原生連結庫已正確內嵌在 Managed 元件中(如果元件是使用系結專案所建置,則原生連結庫必須包含在專案中,而且其建置動作必須是 『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: 無法開啟當機報告服務: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:鏈接器錯誤訊息

此錯誤表示 Managed 連結器發生非預期的錯誤,例如例外狀況,且無法完成或儲存正在處理的元件。 確切錯誤的詳細資訊將會是組建記錄檔的一部分,例如

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 (傳輸層安全性) 提供者。

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:內嵌處理 ...失敗。

嘗試從應用程式內嵌程式代碼時發生意外的事情。 造成問題的元件會在錯誤訊息中命名。 若要修正此問題,必須在 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 自變數] 中)。

鏈接器無法處理混合模式元件。

如需混合模式元件的詳細資訊,請參閱 混合式 (原生和 Managed) 元件

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 版mscorlib.dll Xamarin.iOS 版本沒有的 API)。

MT3006:無法計算專案的完整相依性對應。 這會導致建置時間變慢,因為 Xamarin.iOS 無法正確偵測需要重建的專案(以及不需要重建的專案)。 如需詳細資訊,請檢閱先前的警告。

建置或正確執行 (元件可能會使用來自 Xamarin.iOS 版本mscorlib.dll的 .NET 4 版 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) 會指定 Managed 句柄,而第二個如果呼叫端交出原生句柄的擁有權,則為第二個 ,如果此值為 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 無法取得 Managed 類型的 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 組建選項頁面中傳遞--unsupported--enable-generics-in-registrar為額外的 mtouch 自變數,即可忽略此錯誤。如需詳細資訊,registrar請參閱 developer.xamarin.com/guides/ios/advanced_topics/)。

MT4113: registrar 找到泛型方法:『*.*』。 不支援導出泛型方法,並會導致隨機行為和/或當機。

MT4114:方法 '*.*' 的 registrar 中意外錯誤 -

MT4116: 無法註冊元件 '*': *

MT4117:在 registrar 方法 '*.*' 中找到簽章不符 - 選取器表示方法採用 * 參數,而 Managed 方法具有 * 參數。

MT4118:無法使用相同的原生名稱 ('*') 註冊兩個 Managed 類型 ('*' 和 '*')。

MT4119:無法註冊成員 『*.*』 的選取器 『*』,因為選取器已在不同的成員上註冊。

MT4120:在 registrar 字段 '*.*' 中找到未知的字段類型 '*'。

此錯誤表示 Xamarin.iOS 中的錯誤。 請在 github提出新的問題。

MT4121:在使用 Accounts 架構時,無法使用 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 函式 '*' 中的 variadic 參數類型必須是 System.IntPtr。

MT4124:在 『*』 上找到無效的 * 。

此錯誤表示 Xamarin.iOS 中的錯誤。 請在 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 無法封送處理屬性 '*.*' 的屬性類型 '*'。 具有 [連線] 屬性的屬性必須具有 NSObject 的屬性類型(或 NSObject 的子類別)。

MT4140:在 registrar 方法 '*.*' 中找到簽章不符 - 選取器表示 variadic 方法採用 * 參數,而 Managed 方法則具有 * 參數。

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 會覆寫 retain類別上的 MyNSObjectdeallocrelease ,而且沒有任何衝突。

MT4142:無法註冊類型 『*』。

MT4143:ObjectiveC 類別 '*' 無法註冊,它似乎不是衍生自任何已知的 ObjectiveC 類別(包括 NSObject)。

MT4144:無法註冊方法 '*',因為它沒有相關聯的蹦床。

這表示 Xamarin.iOS 中的 Bug。 請在 github提出新的問題。

MT4145:無效的列舉 '*': 具有 [Native] 屬性的列舉必須具有 'long' 或 'ulong' 的基礎列舉類型。

MT4146:類別 '*' ('*') 上屬性的 Registrar Name 參數包含無效的字元: '*' •。

Objectice-C 類別的名稱不能包含空格符,這表示 Register 對應 Managed 類別上的 屬性不能有 Name 參數不能包含空格符。

請確認 Register 錯誤訊息中所提及之 Managed 類別上的 屬性不包含任何空格符。

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 在 \.

此錯誤表示 Xamarin.iOS 中的錯誤。 請在 github提出新的問題。

MT4164:無法匯出屬性 '*',因為其選取器 '*' 是 Objective-C 關鍵詞。 請使用不同的名稱。

有問題的屬性選取器不是有效的 Objective-C 標識碼。

請使用有效的 Objective-C 識別碼作為選取器。

MT4165: registrar 在任何參考的元件中找不到類型 'System.Void'。

此錯誤最有可能表示 Xamarin.iOS 中的錯誤。 請在 github提出新的問題。

MT4166:無法註冊方法 『*』,因為簽章包含的類型 • 不是參考型別。

這通常表示 Xamarin.iOS 中的 Bug。 請在 github提出新的問題。

MT4167:無法註冊方法 『*』,因為簽章包含泛型類型 • 具有非 NSObject 子類別的泛型自變數類型 。

這通常表示 Xamarin.iOS 中的 Bug。 請在 github提出新的問題。

MT4168:無法註冊類型 '{managed_name}',因為其 Objective-C 名稱 '{exported_name}' 是 Objective-C 關鍵詞。 請使用不同的名稱。

Objective-C有問題的型別名稱不是有效的Objective-C標識碼。

請使用有效的 Objective-C 識別碼。

MT4169: 無法產生 {method} 的 P/Invoke 包裝函式}: {message}

Xamarin.iOS 無法產生所提及的 P/Invoke 包裝函式。 請檢查回報的錯誤訊息,以取得根本原因。

MT4170: registrar 無法從 '{managed type}' 轉換為方法 {method} 中傳回值的 '{native type}'。

請參閱錯誤 MT4172 的描述。

MT4171:成員 {member} 上的 BindAs 屬性無效:BindAs 類型 {type} 與屬性類型 {type} 不同。

請確定 BindAs 屬性中的類型符合其附加的成員類型。

MT4172: registrar 方法 {method} 中參數 '{parameter name}' 的 '{managed type}' 無法從 '{native type}' 轉換成 '{managed type}'。

registrar不支援在提及的類型之間進行轉換。

如果有問題的 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 自變數來完成。請記住,這必須針對每個項目組態完成。

  • 在某些情況下,Managed 系結是由數個原生連結庫所組成,而且所有系結都必須包含在系結中。 每個系結專案中都有一個以上的原生連結庫,因此解決方案只是將所有必要的原生連結庫新增至系結專案。
  • Managed 系結是指原生連結庫中不存在的原生符號。 這通常會在系結存在一段時間時發生,而且該時間已修改原生程序代碼,以便移除或重新命名特定原生類別,而系結尚未更新。
  • 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 自變數欄位中)。

      • 您也可以在專案的 iOS 組建選項中新增 -gcc_flags -dead_strip 至其他 mtouch 自變數,以直接要求連結器移除未使用的程式代碼。

此錯誤只會與 MT5212 一起回報。 如需詳細資訊,請參閱 MT5212

MT5214:原生鏈接失敗,未定義的符號:*。 此符號已參考 Managed 成員 *。 請確認已參考所有必要的架構,並連結原生連結庫。

當 Managed 程式代碼包含不存在之原生方法的 P/Invoke 時,就會報告此錯誤。 例如:

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

有幾個可能的解決方案:

  • 從原始程式碼中移除有問題的 P/Invokes。
  • 開啟所有元件的 Managed 連結器(這會在專案的 iOS 組建選項中完成,方法是將 [連結器行為] 設定為 [所有元件] 。 這會有效地移除您未從應用程式使用的所有 P/Invokes (自動,而不是手動取代上一點)。 缺點是,這會讓您的模擬器建置速度稍慢,如果應用程式使用反映,可能會中斷您的應用程式 - 如需連結器的詳細資訊,請參閱 這裡
  • 建立第二個原生連結庫,其中包含遺漏的原生符號。 請注意,這隻是因應措施(如果您碰巧嘗試呼叫這些函式,您的應用程式將會當機)。

MT5215:對 '*' 的參考可能需要對原生連結器的其他 -framework=XXX 或 -lXXX 指示

這是警告,表示偵測到 P/Invoke 參考有問題的連結庫,但應用程式並未與其連結。

MT5216:原生鏈接失敗*。

從 AOT 編譯程式連結輸出時,會報告此錯誤。

此錯誤最有可能表示 Xamarin.iOS 中的錯誤。 請在 github提出新的問題。

MT5217:原生連結可能失敗,因為連結器命令行太長(* 個字元)。

原生連結失敗,而且有可能發生這種情況,因為連結器命令太長。

Xamarin.iOS 專案通常會動態參考原生符號,這表示原生連結器可能會在原生連結程式期間移除這類原生符號,因為原生連結器不會看到使用這些符號。

通常 Xamarin.iOS 會要求原生連結器使用 -u symbol 連結器旗標保留這類符號,但如果有許多這類符號,整個命令行可能會超過操作系統所指定的命令行長度上限。

這類動態符號有幾個可能的來源:

  • P/Invokes 至靜態連結庫中的方法(其中 dll 名稱位於 __Internal DllImport 屬性 [DllImport ("__Internal")]中)。
  • 從系結專案[Field] (屬性) 靜態連結庫中對記憶體位置的欄位參考。
  • Objective-C 從系結項目靜態連結庫參考的類別(使用累加建置或不使用靜態 registrar時)。

可能的解決方案:

  • 啟用 Managed 連結器(如果可能的話,所有元件都只能使用 SDK 元件)。 這可能會移除足夠的動態符號來源,如此鏈接器命令行就不會超過最大值。
  • 減少 P/Invokes、字段參考和/或 Objective-C 類別的數目。
  • 重寫動態符號,以具有較短的名稱。
  • 在專案的 iOS 建置選項中,以其他 mtouch 自變數的形式傳遞 -dlsym:false 。 使用此選項時,Xamarin.iOS 會在 AOT 編譯的程式代碼中產生原生參考,而且不需要要求連結器保留此符號。 不過,這隻適用於裝置組建,如果靜態庫中沒有 P/Invoke 的函式,它就會造成連結器錯誤。
  • 以專案 iOS 組建選項中的其他 mtouch 自變數的形式傳遞 --dynamic-symbol-mode=code 。 使用此選項時,Xamarin.iOS 會產生參考這些符號的其他原生程序代碼,而不是要求原生連結器使用命令行自變數保留這些符號。 這種方法的缺點是它會稍微增加可執行檔的大小。
  • 在專案的 iOS 建置選項中傳遞--registrar:static作為其他 mtouch 自變數來啟用靜態 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:無法簽署可執行檔。 請檢閱組建記錄。

簽署應用程式時發生錯誤。 請檢閱組建記錄檔,以查看「codeign」所回報的錯誤。

MT6xxx:mtouch 內部工具錯誤訊息

MT600x: Stripper

MT6001:執行版本的 Cecil 不支援元件等量

MT6002:無法等量元件 *

從應用程式中的元件卸除 Managed 程式代碼(移除 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 \,它不會以主要應用程式套件組合的 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 擴充功能 '*' 沒有完全相同的一個監看應用程式。

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:Watch Extension '*' 不包含 Info.plist。

MSBuild 工作:ValidateAppBundleTaskBase

MT7024:監看延伸模組 '*' 未指定 CFBundleIdentifier。

MSBuild 工作:ValidateAppBundleTaskBase

MT7025:監看式延伸模組 '*' 未指定 CFBundleExecutable。

MSBuild 工作:ValidateAppBundleTaskBase

MT7026: Watch Extension '*' 具有無效的 CFBundleIdentifier •,它不會以主要應用程式套件組合的 CFBundleIdentifier 開始 。。。

MSBuild 工作:ValidateAppBundleTaskBase

MT7027:Watch Extension '*' 有 CFBundleIdentifier ≦ 結尾為非法後綴 “.key”。

MSBuild 工作:ValidateAppBundleTaskBase

MT7028:監看延伸模組 '*' 有無效的 Info.plist:它不包含 NSExtension 字典。

MSBuild 工作:ValidateAppBundleTaskBase

MT7029:Watch Extension '*' 有無效的 Info.plist:NSExtensionPointIdentifier 必須是 “com.apple.watchkit”。

MSBuild 工作:ValidateAppBundleTaskBase

MT7030:Watch Extension '*' 有無效的 Info.plist:NSExtension 字典必須包含 NSExtensionAttributes。

MSBuild 工作:ValidateAppBundleTaskBase

MT7031:Watch Extension '*' 有無效的 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 必須存在,而且必須符合主要應用程式套件組合的 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
  • 陣列
  • dict
  • bool
  • real
  • 整數
  • date
  • 資料

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:Set: Entry, *, Contains Invalid Array Index.

MSBuild 工作: PropertyListEditorTaskBase

MT7064:Set: Entry, *, not exist.

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是針對 *-bit 建置,而目前的進程是 *-bit。

這表示建置程式中發生錯誤。 請在 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 無效。:D elegateType's ({2}) 'Handler' 字段為 Null。

[DelegateProxy]有問題的方法屬性無效。

這通常表示 Xamarin.iOS 中的 Bug。 請在 github提出新的問題。

MT8015:方法 傳回值的 DelegateProxyAttribute 無效。:D elegateType 的 '{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提出新的問題。