共用方式為


將 Xamarin.Mac 整合應用程式更新為 64 位

自 2018 年 1 月起,Apple 要求新的 Mac App Store 提交目標為 64 位。 Mac App Store 上已提供的應用程式必須在 2018 年 6 月前更新為目標 64 位。

>檔案新的 Xamarin.Mac 專案範本預設會建立 64 位應用程式,因此任何最近建立的應用程式都已經 64 位相容,而且不需要任何變更。

以 64 位為目標

  1. 開啟 Xamarin.Mac 應用程式的 [項目選項] 視窗:

    The contextual menu for the project

  2. 選取 [Mac 組建],並將 [支持的架構] 設定[x86_64

    Setting the supported architectures to x86_64

  3. 如果您的應用程式有任何外部相依性,例如原生參考或系結專案,請將其更新為目標 64 位。

錯誤

第一次使用64位支援建置或執行應用程式時,可能會遇到來自clang或運行時間問題的連結錯誤。 如果第三方相依性,例如 Xamarin.Mac 中的原生參考或系結專案,或手動載入的系統架構,則可能發生這些錯誤,但尚未更新為 64 位。

提示

將您的項目轉換成64位是一項重大變更,而且可能會間接發現各種程式設計錯誤。 特別是,它可能會變更數據結構的大小和對齊方式,這會影響專案中連結的 p/invoke 簽章和機器碼。 請考慮檢閱提供的任何組建警告,並在之後徹底測試您的應用程式,以攔截潛在的問題。

由於未以 64 位為目標的動態連結第三方相依性所產生的範例錯誤:

ld : warning : ignoring file PATH/ThirdPartyLibrary.framework/ThirdPartyLibrary, 
file was built for i386 which is not the architecture being linked (x86_64): 
PATH/ThirdPartyLibrary.framework/ThirdPartyLibrary 

在運行時間可能會遵循此錯誤, dlopen 方法是傳 IntPtr.Zero 回 而不是預期的句柄。

靜態連結的第三方相依性未以64位為目標的範例錯誤:

Undefined symbols for architecture x86_64:
  "_LibraryFunction", referenced from:
     -u command line option
ld: symbol(s) not found for architecture x86_64 

若要成功建置並執行,請將這些相依性更新為64位並重新編譯您的應用程式。