共用方式為


Xamarin.Mac 錯誤訊息 (mmp)

MM0xxx:mmp 錯誤訊息

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

MM0000:未預期的錯誤 - 請在 提出錯誤報告 https://github.com/xamarin/xamarin-macios/issues/new

發生未預期的錯誤狀況。 請 盡可能提出錯誤報告 ,其中包含下列資訊:

  • 完整建置記錄,具有最大詳細資訊(例如-v -v -v -v,在 [其他 mmp 自變數] 中):
  • 重現錯誤的最小測試案例;和
  • 所有版本資訊

取得確切版本資訊最簡單的方式是使用 Xamarin Studio 功能表[關於 Xamarin Studio] 專案、[顯示詳細數據] 按鈕和複製/貼上版本資訊(您可以使用 [複製資訊] 按鈕)。

MM0001:此版本的 Xamarin.Mac 需要 Mono(目前的 Mono {0} 版本為 {1})。 請從更新Mono.framework https://mono-project.com/Downloads

MM0003:應用程式名稱 '{0}.exe' 與 SDK 或產品元件 (.dll) 名稱衝突。

MM0007:根元件 '{0}' 不存在

MM0008:您應該只提供一個根元件,找到 {0} 的元件: '{1}'

MM0009:載入元件時發生錯誤:*。

從根元件參考載入元件時發生錯誤。 組建輸出中可能會提供詳細資訊。

MM0010:無法剖析命令行自變數: {0}

MM0016:選項 '{0}' 已被取代。

MM0017:您應該提供根元件

MM0018:未知的命令行自變數: '{0}'

MM0020:『{0}的有效選項為』{1}。

MM0023:應用程式名稱 '{0}.exe' 與其他使用者元件衝突。

MM0026:無法剖析命令行自變數 '{0}': {1}

MM0043:不支援Boehm垃圾收集行程。 已改為選取SGen 垃圾收集行程。

MM0050:如果傳遞 --no-root-assembly,則無法提供根元件。

MM0051:如果傳遞 --no-root-assembly,則需要輸出目錄 (--output)。

MM0053:無法使用整合 API 停用新的 refcount。

MM0056:在我們的任何預設位置中找不到 Xcode。 請安裝 Xcode,或使用 --sdkroot=<path 傳遞自定義路徑>

MM0059: 在系統上找不到目前選取的 Xcode: ; {0}

MM0060:在系統上找不到目前選取的 Xcode。 'xcode-select --print-path' 傳回 '{0}',但該目錄不存在。

MM0068:目標 Framework 的值無效: {0}。

MM0071:未知的平臺:*。 這通常表示 Xamarin.Mac 中的 Bug;請使用 測試案例提出 Bug 報告

這通常表示 Xamarin.Mac 中的 Bug;請使用 測試案例提出 Bug 報告

MM0073:Xamarin.Mac * 不支援 * 的部署目標 (最小值為 *)。 請在您專案的 Info.plist 中選取較新的部署目標。

最小部署目標是錯誤訊息中指定的目標;請在專案的 Info.plist 中選取較新的部署目標。

如果無法更新部署目標,請使用舊版的 Xamarin.Mac。

MM0074:Xamarin.Mac * 不支援 * 的部署目標 *(最大值為 *)。 請在您專案的 Info.plist 中選取較舊的部署目標,或升級至較新版本的 Xamarin.Mac。

Xamarin.Mac 不支援將最低部署目標設定為高於為此特定 Xamarin.Mac 版本所建置的版本。

請在專案的 Info.plist 中選取較舊的最小部署目標,或升級至較新版本的 Xamarin.Mac。

MM0079:內部錯誤 - 未將可執行檔案複製到應用程式套件組合中。 請連絡 'support@xamarin.com'

MM0080:停用 NewRefCount,--new-refcount:false 已被取代。

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

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

第二個潛在的替代解決方案是改用動態 registrar 。 這會透過動態註冊類型來強加啟動成本,但移除頭檔需求。

最後一個草根解決方案是使用舊版的 Xamarin.Mac,其支援您專案所需的 SDK。

MM0097:找不到 machine.config 檔案 '{0}'。

MM0098:AOT 編譯僅適用於 Unified

MM0099:內部錯誤 {0}。 請使用 測試案例提出 Bug 報告

MM0114:混合式 AOT 編譯需要所有元件都經過 AOT 編譯。

MM0129:偵錯 '*' 的符號檔不符合元件,而且會忽略。

無法載入指定元件的偵錯符號 -pdb (僅限可攜式 pdb)或.mdb檔案。

這通常表示元件比符號更新或更早。 因為它們不符,因此無法使用,而且會忽略符號。

此警告不會影響正在建置的應用程式,不過您可能無法完全偵錯它(特別是來自指定元件的程式代碼)。 此外,堆疊追蹤和當機報告可能遺漏一些資訊。

請將此問題回報給元件套件的發行者(例如 NuGet 作者),以便在未來的版本中修正此問題。

MM0130:找不到根元件。 您應該至少提供一個根元件。

執行 --runregistrar時,至少應該提供一個根元件。

MM0131:元件清單中找不到產品元件 '{0}': '{1}'

執行 --runregistrar時,元件清單應該包含產品元件 Xamarin.Mac、XamMac。

MM0132:未知的優化:*。 有效值為: *

無法辨識指定的優化。

接受的格式為 [+|-]optimization-name,其中 optimization-name 是錯誤訊息中列出的其中一個值。

如需每個優化的完整描述,請參閱 建置 優化。

MM0133:發現超過 1 個元件比對 '{0}' 選擇第一個: '{1}'

MM0134:32 位應用程式應該移轉至64位。

Apple 已宣佈不允許 macOS App Store 提交 32 位應用程式(從 2018 年 1 月開始)。

此外,32 位應用程式不會在 High Sierra “without compromises” 之後於 macOS 版本上執行。

如需詳細資訊: https://developer.apple.com/news/?id=06282017a

請考慮將您的應用程式和任何相依性更新為64位。

若要建置您的應用程式,Xamarin.Mac 必須連結至系統連結庫,其中有些取決於錯誤訊息中指定的 SDK 版本。 由於您使用的是舊版的 SDK,因此在運行時間,對這些 API 的調用可能會失敗。

修正此錯誤的建議方法是升級 Xcode 以取得所需的 SDK。 如果您已安裝多個版本的 Xcode,或想要在非預設位置使用 Xcode,請務必在 IDE 的喜好設定中設定正確的 Xcode 位置。

或者,啟用 Managed 連結器 以移除未使用的 API,包括需要指定連結庫的新 API(在大部分情況下)。 不過,如果您的專案需要在較新的 SDK 中引進 API,而不是 Xcode 所提供的 API,則無法運作。

作為最後一個草根解決方案,請使用舊版的 Xamarin.Mac,不需要在建置程式期間出現這些新的 SDK。

MM14xx:產品元件

MM1401:參考中遺漏必要的 '{0}' 元件

MM1402:元件 '{0}' 與此工具不相容

MM1403: {0} 找不到 '{1}'。 目標架構 『{0}' 無法封裝應用程式。

MM1404:目標 Framework '{0}' 無效。

MM1405:useFullXamMacFramework 必須一律以 Framework .NET 4.5 為目標,而不是無效的 '{0}'

MM1406:目標 Framework '{0}' 在以 Xamarin.Mac 4.5 .NET 框架為目標時無效。

MM1407:Xamarin.Mac 參考 '' 與選取的目標架構 '{0}{1}' 不符。

MM15xx:元件收集 (不需要連結器) 錯誤

MM1501:無法解析參考: {0}

MachO.cs

MM1600:不是 Mach-O 動態連結庫(未知標頭 '0x{0}'): {1}。

MM1601:不是靜態庫(未知標頭 '{0}'): {1}。

MM1602:不是 Mach-O 動態連結庫(未知標頭 '0x{0}'): {1}。

MM1603:中{1}位置{0}的脂肪專案未知格式。

MM1604:類型的 {0} 檔案不是MachO 檔案 ({1})。

MM2xxx:鏈接器

MM20xx:連結器(一般) 錯誤

MM2002:無法解析參考: {0}

MM2003:將忽略選項 '{0}',因為已停用連結

MM2004:找不到額外的連結器定義檔案 '{0}'。

MM2005:無法剖析來自 '{0}' 的定義。

MM2006:已參考原生連結庫 『{0}』,但找不到。

MM2010:未知的 HttpMessageHandler {0}。 有效值為 HttpClientHandler (預設值)、CFNetworkHandler 或 NSUrlSessionHandler

MM2011:未知的 TLSProvider '{0}。 有效值為預設值或 appletls

MM2013:無法解析 “” 中參考的{1} “{0}”。 應用程式不會包含參考的元件,而且可能會在運行時間失敗。

MM2014:Xamarin.Mac 延伸模組不支持連結。 將會忽略連結要求。 ** 此訊息在 XM 3.6+ 中已過時 **

MM2016:無效的 TlsProvider {0} 選項。 只會使用有效的值 {1}

MM2017:無法處理 XML 描述: {0}

MM202x:系結優化器處理 ...失敗。

MM2100:Xamarin.Mac 傳統 API 不支持平台連結。

MM2103:處理元件 '*' 時發生錯誤: *

處理元件時發生意外的錯誤。

造成問題的元件會在錯誤訊息中命名。 若要修正此問題,您必須在 Bug 報告中提供元件,以及啟用詳細資訊的完整組建記錄檔(也就是-v -v -v -v在 [其他 mtouch 自變數] 中)。

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

如需混合模式元件的詳細資訊,請參閱 /cpp/dotnet/mixed-native-and-managed-assemblies。

MM2106:無法優化在 * 位移 * 中對 BlockLiteral.SetupBlock[Unsafe] 的呼叫,因為 *。

當連結器無法優化 或 BlockLiteral.SetupBlockBlock.SetupBlockUnsafe的呼叫時,連結器會報告這個警告。

訊息會指向呼叫 BlockLiteral.SetupBlock[Unsafe]的方法,而且也可能提供為何無法優化呼叫的線索。

請提出問題以及完整的組建記錄檔,以便我們可以調查發生錯誤的情況,並可能在未來啟用更多案例。

MM2107: 移除動態 registrar 並不安全,因為 {reasons}

當開發人員要求移除動態 registrar 時,鏈接器會報告此警告(傳遞 --optimize:remove-dynamic-registrar 至 mmp),但鏈接器會判斷執行此動作並不安全。

若要移除警告,請將優化自變數移除為 mmp,或傳遞 --nowarn:2107 以忽略它。

根據預設,此選項會在可能且安全的情況下自動啟用。

MM2108: '{0}' 已去除架構,但 '{1}' 符合 App Store 限制。 這可能會中斷編碼簽章。 請考慮使用 lipo 移除連結庫,或使用 --optimize=-trim-architectures 停用]:

App Store 現在會拒絕包含連結庫和架構的應用程式,其中包含 32 位變體。 當複製到最終應用程式套件組合時,連結庫會移除未使用的架構。

這一般是安全的,而且會減少應用程式套件組合大小作為額外的優點。 不過,任何已簽署程序代碼的配套架構都會使其簽章失效(並在稍後簽署應用程式時辭職)。

請考慮使用 lipo 從來源連結庫永久移除不必要的架構。 如果應用程式未發佈至 App Store,可藉由傳遞 --optimize=-trim-architectures 為 [其他 MMP 自變數] 來停用此移除。

MM2109:Xamarin.Mac 傳統 API 不支持平台連結。

MM3xxx: AOT

MM30xx:AOT (一般) 錯誤

MM3001:無法將元件 '{0}' AOT

MM3009:已要求 '{0}' 的 AOT,但找不到

MM3010:已要求排除 '{0}' 的 AOT,但找不到

MM4xxx:產生程序代碼

MM40xx: driver.m

MM4001:主要範本無法展開至 {0}

MM41xx: registrar

MM4134:您的應用程式使用 '{0}' 架構,此架構未包含在您用來建置應用程式的 MacOS SDK 中(此架構是在 OSX {2}中引進,而您使用 MacOS {1} SDK 建置時)。靜態 registrar 不支援此組態 (pass --registrar:d ynamic 作為您專案的 Mac 組建選項中要選取的額外 mmp 自變數)。 或者,在應用程式的 Mac 組建選項中選取較新的 SDK。

MM4173: registrar 無法計算方法 {method} 中類型 {delegate-type} 之委派的區塊簽章,因為 *。

這是警告,表示 registrar 無法將指定方法的區塊簽章插入產生的 registrar 程式代碼中,因為 registrar 無法計算它。

這表示必須在運行時間計算區塊簽章,這有點慢。

此警告目前有兩個可能的原因:

  1. Managed 委派的類型為 System.DelegateSystem.MulticastDelegate。 這些類型不代表特定的簽章,這表示 registrar 無法計算對應的原生簽章。 在此情況下,修正程式是針對 區塊使用特定的委派類型(或者,藉由在專案的 Mac 組建選項中新增 --nowarn:4173 為額外的 mmp 自變數,即可忽略警告)。
  2. registrar找不到Invoke委派的方法。 這不應該發生,因此請提出 測試項目的問題 ,以便我們修正此問題。

MT4174:找不到區塊,以委派方法 {method}的參數 #{parameter}的轉換方法。

這是警告,指出靜態 registrar 找不到方法來建立區塊的 Objective-C 委派。 在運行時間嘗試尋找 方法,但可能也會失敗(MT8009 例外狀況)。

此警告的其中一個可能原因是手動撰寫使用區塊之 API 的系結。 建議使用系結專案來系結 Objective-C 程序代碼,特別是當它涉及區塊時,因為手動執行程式代碼時相當複雜。

如果情況並非如此,請提出 測試案例的問題

MM5xxx:GCC 和工具鏈

MM51xx:編譯

MM5101:遺漏 '{0}' 編譯程式。 請安裝 Xcode 'Command-Line Tools' 元件。

MM5103:無法編譯。 錯誤碼 - {0}。 請使用 測試案例提出 Bug 報告

MM52xx:連結

MM5202:缺少 Mono.framework MDK。 請從安裝Mono.framework版本的 MDK https://mono-project.com/Downloads

MM5203:找不到 libxammac.a,可能是因為 Xamarin.Mac 安裝損毀。 請重新安裝 Xamarin.Mac。

MM5204:無效的架構。 x86_64僅支援非傳統配置檔。

MM5205:無效的架構 '{0}'。 有效的架構為 i386 和 x86_64 (當 --profile=mobile 時)。

MM5218:無法忽略動態符號 {symbol} (--ignore-dynamic-symbol={symbol}), 因為它未偵測為動態符號。

請參閱對等的 mtouch警告

MM53xx:其他工具

MM5301:找不到 pkg-config。 請從安裝Mono.framework https://mono-project.com/Downloads

MM5305:遺漏 'otool' 工具。 請安裝 Xcode '命令行工具' 元件

MM5306:遺漏相依性。 請安裝 Xcode '命令行工具' 元件

MM5308:Xcode 許可協定可能尚未接受。 請啟動 Xcode。

MM5309:原生鏈接失敗,錯誤碼 1。 如需詳細數據,請查看組建記錄檔。

MM5310:install_name_tool失敗,錯誤碼為 『{0}』。 如需詳細數據,請查看組建記錄檔。

MM5311:lipo 失敗,錯誤碼為 '{0}'。 如需詳細數據,請查看組建記錄檔。

MM8xxx:運行時間

MM800x: misc

MM8017:不支援Boehm垃圾收集行程。 請改用 SGen。

MM8025:無法計算類型 '{type' 的令牌參考。AssemblyQualifiedName}' 因為 {reasons}

這表示 Xamarin.Mac 中的 Bug。 請使用 測試案例提出 Bug 報告

可能的因應措施是藉由在專案的 Mac 組建選項中傳遞--optimize:-register-protocols為額外的 mmp 自變數來停用register-protocols優化。

MM8026:當動態 registrar 已連結時,不支援 * 。

這通常表示 Xamarin.Mac 中的 Bug,因為如果需要,動態 registrar 不應該連結出去。 請使用 測試案例提出 Bug 報告

您可以在專案的 Mac 組建選項中新增--optimize=-remove-dynamic-registrar至其他 mmp 自變數,強制連結器保持動態registrar。