VS2022中.NET MAUI项目无法连接Mac设备的问题求助
Xamarin.Forms项目可正常连接MacBook Pro 2020 M1设备,但.NET MAUI项目连接失败,连接时输出日志:
Checking host configuration for connection to "MacBookPro-DEV"...
Checking SSH configuration...
Initializing environment...
Checking available disk space...
Checking for Rosetta installation...
Verifying Mono installation...
Checking host configuration for connection to "MacBookPro-DEV"...
Disconnecting from "MacBookPro-DEV"...
Disconnecting from "MacBookPro-DEV"...
Connection to "MacBookPro-DEV" has been terminated.
The object reference has not been set to an instance of an object.
环境信息
- .NET 6.0
- Visual Studio 2022 v17.6.2 / v17.7.3
- Visual Studio for Mac v17.6.3
- Windows 10(主机+虚拟机)
- macOS Ventura 13.5.1
- Xcode 14.3.1
- Mac与PC同网络,LAN有线连接
已完成排查
- 命令行可手动SSH连接Mac
- 清除Mac和Windows上的Xamarin缓存
- 配置Mac远程登录、防火墙、授权用户及正确IP
- 测试VS2022不同版本
- 更新Visual Studio for Mac到v17.6.3
- 清除Xcode缓存
- 安装Mono 6.12.0.188并添加至环境变量
1. 重启Mac端MAUI代理服务
在Mac终端执行命令重启代理服务:
sudo /Library/Frameworks/Xamarin.framework/Versions/Current/bin/mac-agent restart
完成后回到Windows的VS2022重新尝试连接。
2. 手动指定Mono路径给VS2022
VS2022可能未自动识别Mono路径,手动配置:
- 打开VS2022「工具」→「选项」→「Xamarin」→「iOS设置」
- 在「Mono Framework Location」中选择Mac上的Mono路径(默认
/Library/Frameworks/Mono.framework/Versions/Current) - 保存后重启VS2022再连接。
3. 重置VS2022的Mac连接缓存
删除Windows端VS2022的连接缓存文件:
- 关闭VS2022
- 打开路径
%LOCALAPPDATA%\Xamarin\MonoTouch - 删除该目录下与目标Mac相关的所有文件和文件夹
- 重新打开VS2022,重新添加Mac设备连接。
4. 强制终端以Rosetta模式运行
M1 Mac运行x86程序需Rosetta 2,确保终端以Rosetta启动:
- 访达中找到「终端」,右键→「显示简介」
- 勾选「使用Rosetta打开」,重启终端
- 重新执行Mono初始化相关操作后尝试连接。
5. 验证VS2022的.NET MAUI组件完整性
打开VS2022「工具」→「获取工具和功能」,确认以下组件已安装:
- .NET Multi-platform App UI开发套件
- iOS开发所需的全部组件(含Xamarin.iOS、Mac构建工具)
- .NET 6.0 SDK及运行时为最新版本
6. 调整虚拟机网络模式
将Windows虚拟机的网络设置改为「桥接模式」,确保虚拟机与Mac处于同一局域网,避免NAT模式下的网络隔离问题。
内容的提问来源于stack exchange,提问作者rocko

