配对 Mac 进行iOS开发

使用 .NET 多平台应用 UI (.NET MAUI) 生成本机iOS应用程序需要访问仅在 Mac 上运行的 Apple 生成工具。 因此,Visual Studio 2022 必须连接到可访问网络的 Mac 才能生成 .NET MAUI iOS应用。

重要

虽然已发布 .NET 多平台应用 UI (.NET MAUI) ,Visual Studio 但对 .NET MAUI 的支持目前为预览版。 此内容与发布前可能进行实质性修改的预发布产品相关。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。

Visual Studio 2022 的“与 Mac 配对”功能发现、连接到、使用 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,并选择最新的 Visual Studio 2022 for Mac 预览版。 安装后必须手动打开Xcode,以便它可以添加任何其他组件。

如果不想为 2022 Mac 安装Visual Studio,Visual Studio 2022 可以自动配置 Mac 生成主机。 但是,仍必须安装和运行Xcode。

启用 Mac 上的远程登录

若要设置 Mac 生成主机,首先启用远程登录:

  1. 在 Mac 上,打开 “系统首选项 ”并转到“ 共享 ”窗格。

  2. 选中“服务”列表中的“远程登录” 。

    Enabling remote login.

    请确保它配置为 允许所有用户访问,或者 Mac 用户名或组包含在允许的用户列表中。

  3. 如果出现提示,请配置 macOS 防火墙。 如果将 macOS 防火墙默认设置为阻止传入的连接,则可能需要允许 mono-sgen 接收传入的连接。 若出现此情况,系统将显示警报以进行提示。

  4. 如果它与 Windows 计算机位于同一网络中,则 Mac 现在应Visual Studio 2022 年发现。 如果 Mac 仍无法发现,请尝试 手动添加 Mac

从 Visual Studio 2022 连接 Mac

在 Mac 上启用远程登录后,将 Visual Studio 2022 连接到 Mac:

  1. 在 2022 Visual Studio中,打开现有的 .NET MAUI 项目或创建新项目。

  2. 打开“配对到 Mac”对话框,其中“配对到 Mac”按钮iOS工具栏:

    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 生成主机,则可以在 2022 Visual Studio 中生成 .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。 例如 en1en2

  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

与 Mac 配对会自动预配 Mac,其中包含生成 .NET MAUI iOS应用所需的软件。 这包括 .NET 和各种与Xcode相关的工具, (但不Xcode本身) 。

重要

  • 与 Mac 配对无法安装Xcode。 必须在 Mac 生成主机上手动安装它。 .NET MAUI iOS开发需要它。
  • 自动预配 Mac 需要在 Mac 上启用远程登录,并且 Windows 计算机必须能够通过网络访问该 Mac。
  • 自动 Mac 预配需要在 Mac 上安装 .NET 所需的足够可用空间。

此外,当 Visual Studio 2022 连接到 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:net6.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 生成主机。