You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

VS2017与MsBuild下Xamarin Mac Agent自定义端口连接NAT Mac问题

解决Xamarin Mac Agent自定义端口连接问题

当然可以配置VS和MsBuild使用自定义端口连接外网的Mac,针对你遇到的两种场景(Visual Studio 2017和MsBuild命令行),分别有不同的解决方法:

一、Visual Studio 2017 配置步骤

你遇到的指纹匹配问题,是因为VS缓存了路由器22端口的SSH指纹,而且默认可能没有正确识别你指定的自定义端口。可以按以下步骤修复:

  1. 清除旧的指纹缓存
    关闭Visual Studio,删除%LOCALAPPDATA%\Xamarin\MonoTouch\known_hosts文件——这个文件保存了所有曾连接过的SSH主机指纹,删除后VS会重新请求新的指纹验证。

  2. 手动修改Mac连接配置
    同样在关闭VS的状态下,打开%LOCALAPPDATA%\Xamarin\MonoTouch\devices.json文件,添加或修改你的Mac设备条目,明确指定端口:

    {
      "Id": "external-mac-1",
      "Name": "外网Mac设备",
      "Address": "1.1.1.1",
      "Port": 6535,
      "Username": "user",
      "LastConnection": "2024-05-20T12:00:00"
    }
    

    保存文件后重新打开VS,在Mac Agent的设备列表里选择这个新增的设备,尝试连接——此时VS应该会通过6535端口连接,并提示你验证Mac的SSH指纹,确认即可。

二、MsBuild 命令行配置步骤

你看到的Ignoring server port when the build is not running inside Visual Studio警告是Xamarin的默认行为:非VS环境下,MsBuild不会直接使用ServerPort参数。这时候可以通过SSH配置文件来绕开这个限制:

  1. 创建SSH配置文件
    在Windows用户目录(C:\Users\你的用户名\.ssh\)下创建一个名为config的无扩展名文件,添加以下内容:

    Host external-mac
      HostName 1.1.1.1
      Port 6535
      User user
    

    这里的external-mac是你自定义的主机别名,后续可以用它代替完整的IP和端口。

  2. 修改MsBuild命令
    将原来的ServerAddress替换为这个别名,去掉ServerPort参数,修改后的命令如下:

    msbuild mySolution.sln /t:Clean;Build /p:Configuration="Release";IpaPackageDir=C:\t\;Platform=iPhone;ServerAddress=external-mac;ServerUser=user;ServerPassword=password
    

    执行这个命令时,MsBuild会通过SSH配置里指定的6535端口连接Mac,而不是默认的22端口。

  3. 提前验证SSH连接
    先在命令行执行ssh external-mac,确保能正常连接到Mac并通过验证(输入密码或使用密钥),再运行MsBuild命令,避免因SSH连接问题导致构建失败。

额外注意事项

  • 确认路由器的NAT映射规则正确:公网IP的6535端口必须准确转发到Mac本地的22端口,且Mac的防火墙允许22端口的入站SSH请求。
  • 如果你的Mac使用SSH密钥登录,可以在SSH配置文件中添加IdentityFile C:\路径\到\你的密钥文件,这样MsBuild构建时无需输入密码,更安全高效。

内容的提问来源于stack exchange,提问作者Anton Kuryan

火山引擎 最新活动