與 Mac 配對以進行 iOS 開發

使用 .NET 多平臺應用程式 UI (.NET MAUI) 建置原生 iOS 應用程式需要存取 Apple 的建置工具,而 Apple 只會在 Mac 上執行。 因此,Visual Studio 2022 必須連線到可網路存取的 Mac,才能建置 .NET MAUI iOS 應用程式。

Visual Studio 2022 的 [與 Mac 配對] 功能會探索、連線、驗證及記住 Mac 組建主機,讓您可以在 Windows 上提高生產力。

與 Mac 配對可啟用下列軟體開發工作流程:

  • 您可以在 Visual Studio 2022 中撰寫 .NET MAUI iOS 程序代碼。
  • Visual Studio 2022 會開啟 Mac 組建主機的網路連線,並使用該電腦上的建置工具來編譯和簽署 iOS 應用程式。
  • 不需要在 Mac 上執行個別的應用程式 – Visual Studio 2022 會透過 SSH 安全地叫用 Mac 組建。
  • Visual Studio 2022 會在變更發生時立即收到通知。 例如,當 iOS 裝置插入 Mac 或變成網路上可用時,iOS 工具列會立即更新。
  • Visual Studio 2022 的多個實例可以同時連線到 Mac。
  • 您可以使用 Windows 命令行來建置 iOS 應用程式。

注意

在遵循本文中的指示之前,請在 Mac 上安裝 Xcode。 然後,在安裝之後手動開啟 Xcode,使其可以新增其他元件。 此外,您也應該安裝最新的 Visual Studio 2022 for MacMono。 此外,如果您有具有Apple晶片的Mac電腦,請確定已安裝 Rosetta。

如果您不想安裝 Visual Studio 2022 for Mac,Visual Studio 2022 可以自動設定 Mac 組建主機。 不過,您仍必須安裝並執行 Xcode,並安裝 Mono。

在 Mac 上啟用遠端登入

若要設定 Mac 組建主機,請先啟用遠端登入:

  1. 在 Mac 上,開啟 [系統喜好設定 ],然後移至 [ 共用 ] 窗格。

  2. 核取 [服務] 清單中的 [遠端登入]

    Enabling remote login.

    請確定它已設定為允許所有使用者存取 ,或您的 Mac 使用者名稱或群組包含在允許的使用者清單中。

  3. 如果出現提示,請設定 macOS 防火牆。 如果您已設定 macOS 防火牆封鎖傳入連線,則可能需要允許 mono-sgen 接收傳入連線。 如果出現警示,就會提示您。

  4. 如果它位於與 Windows 電腦相同的網路上,Visual Studio 2022 現在應該可以探索 Mac。 如果 Mac 仍然無法探索,請嘗試 手動新增 Mac

從 Visual Studio 2022 連線 Mac

在 Mac 上啟用遠端登錄之後,將 Visual Studio 2022 連線到 Mac:

  1. 在 Visual Studio 2022 中,開啟現有的 .NET MAUI 專案或建立新的專案。

  2. 使用 [與 Mac 配對] 按鈕 iOS 工具列開啟 [配對至 Mac] 對話框

    The iOS toolbar, with the Pair to Mac button highlighted.

    或者,選取 [ 工具 > iOS > 配對至 Mac]。

    [ 配對至 Mac ] 對話框會顯示所有先前連線且目前可用的 Mac 組建主機清單:

    The Pair to Mac dialog.

  3. 選取清單中的 Mac,然後選取 [連線]。

  4. 輸入您的使用者名稱和密碼。 第一次連線到任何特定 Mac 時,系統會提示您輸入該電腦的使用者名稱和密碼:

    Entering a username and password for the Mac.

    提示

    登入時,請使用您的系統用戶名稱。

    [與 Mac 配對] 會使用這些認證來建立與 Mac 的新 SSH 連線。 如果成功,則會將金鑰新增至 Mac 上的 authorized_keys 檔案。 與相同Mac的後續聯機會自動登入。

  5. [與 Mac 配對] 會自動設定 Mac。 Visual Studio 2022 會視需要在連線的 Mac 組建主機上安裝或更新必要條件。 不過,仍必須手動安裝 Xcode。

  6. 檢查連線狀態圖示。 當 Visual Studio 2022 連接到 Mac 時,Mac 的 [配對至 Mac] 對話框中的項目會顯示圖示,指出它目前已連線:

    A connected Mac.

    一次只能有一個已連線的 Mac。

    提示

    以滑鼠右鍵按一下 [與 Mac 配對] 清單中的任何 Mac 都會啟動操作功能表,讓您可以 [連線...]、[不要記住這部 Mac] 或 [中斷連線]

    The Pair to Mac context menus.

    如果您選擇 [不要記住這部 Mac],則會忘記所選取 Mac 的認證。 若要重新連線至該 Mac,您需要重新輸入使用者名稱和密碼。

如果您已成功配對至 Mac 組建主機,即可在 Visual Studio 2022 中建置 .NET MAUI iOS 應用程式。 如需詳細資訊,請參閱 建置您的第一個應用程式

如果您尚未配對 Mac,請嘗試 手動新增 Mac

手動新增 Mac

如果您沒有看到 [配對到 Mac] 對話框中所列 的特定 Mac ,請手動新增它:

  1. 開啟 Mac 上的系統喜好 > 設定共享 > 遠端登錄 ,以找出 Mac 的 IP 位址:

    The Mac's IP address in System Preferences > Sharing.

    或者,使用命令列。 在終端機中,發出下列命令:

    ipconfig getifaddr en0
    

    視您的網路組態而定,您可能需要使用 以外的 en0介面名稱, en1 例如 或 en2

  2. 在 Visual Studio 2022 的 [與 Mac 配對] 對話框中,選取 [ 新增 Mac...] :

    The Add Mac button in the Pair to Mac dialog.

  3. 輸入 Mac 的 IP 位址,然後選取 [ 新增]:

    Entering the Mac's IP address.

  4. 輸入 Mac 的使用者名稱和密碼:

    Enter a username and password.

    提示

    登入時,請使用您的系統用戶名稱。

  5. 選取 [登入 ] 以透過 SSH 將 Visual Studio 2022 連線到 Mac,並將其新增至已知計算機清單。

啟用對已知 Mac 的自動連線

根據預設,Visual Studio 啟動時,將不會建立與先前配對 Mac 的連線。 不過,您可以流覽至 [工具>選項 > Xamarin > iOS] 設定,並確定已核取 [啟用已知 Mac 的自動連線],在 Visual Studio 中啟用已知 Mac 的自動連線:

Enable auto connection to known Macs in Visual Studio.

重新啟動 Visual Studio 之後,它會在每個啟動時自動連線到已知的 Mac。

自動 Mac 佈建

與 Mac 配對會自動布建 Mac,其中包含建置 .NET MAUI iOS 應用程式所需的軟體。 這包括 .NET 和各種 Xcode 相關工具(但不是 Xcode 本身)。

重要

  • 配對至 Mac 無法安裝 Xcode。 您必須在 Mac 組建主機上手動安裝它。 這是 .NET MAUI iOS 開發的必要專案。
  • 自動 Mac 佈建需要在 Mac 上啟用遠端登入,而且 Mac 必須可透過網路存取 Windows 電腦。
  • 自動 Mac 布建需要 Mac 上足夠的可用空間才能安裝 .NET。

此外,當 Visual Studio 2022 連線到 Mac 時,[配對至 Mac] 會執行 Mac 的必要軟體安裝和更新。

Xcode 工具和授權

[與 Mac 配對] 也會確認是否已安裝 Xcode 並接受其授權。 雖然 [配對到 Mac] 不會安裝 Xcode,但它會提示接受授權。

此外,[配對至 Mac] 將會安裝或更新以 Xcode 散發的各種套件。 這些套件的安裝會快速發生,而且不會出現提示。

針對自動 Mac 佈建進行疑難排解

如果您在使用自動 Mac 布建時遇到問題,請查看儲存在 %LOCALAPPDATA%\Xamarin\Logs\17.0 中的 Visual Studio 2022 IDE 記錄。 這些記錄可能包含錯誤訊息,協助您進一步診斷失敗或取得支援。

從 Windows 命令列建置 iOS 應用程式

與 Mac 配對支援從命令行建置 .NET MAUI 應用程式。 瀏覽至保存 .NET MAUI iOS 應用程式來源的資料夾,然後執行下列命令:

dotnet build -f net8.0-ios -p:ServerAddress={macOS build host IP address} -p:ServerUser={macOS username} -p:ServerPassword={macOS password} -p:TcpPort=58181 -p:_DotNetRootRemoteDirectory=/Users/{macOS username}/Library/Caches/Xamarin/XMA/SDKs/dotnet/

上述範例中傳遞給 dotnet 的參數如下:

  • ServerAddress – Mac 組建主機的IP位址。
  • ServerUser – 登入 Mac 組建主機時要使用的用戶名稱。 請使用您的系統使用者名稱,而非完整名稱。
  • ServerPassword – 登入 Mac 組建主機時要使用的密碼。
  • _DotNetRootRemoteDirectory - Mac 組建主機上包含 .NET SDK 的資料夾。

第一次從 Visual Studio 2022 或命令行配對 Mac 登入 Mac 組建主機時,它會設定 SSH 金鑰。 使用這些金鑰,未來的登入不需要使用者名稱或密碼。 新建立的金鑰會儲存在 %LOCALAPPDATA%\Xamarin\MonoTouch 中。

如果從命令列組建叫用來省略 ServerPassword 參數,則 [與 Mac 配對] 會嘗試使用已儲存的 SSH 金鑰來登入 Mac 組建主機。

如需從 Windows 命令行建置 iOS 應用程式的詳細資訊,請參閱 使用命令行發佈 iOS 應用程式。