.NET 8升级后MAUI项目触发NETSDK1139错误(目标平台标识符ios未被识别)求助
我完全懂你这种升级后踩坑的崩溃感!同事升级顺风顺水,自己两边(Windows+Mac)的VS都出问题,确实闹心。先帮你理下当前的核心问题:升级到.NET8后,MAUI项目报Error NETSDK1139: The target platform identifier ios was not recognized,Android也有类似情况;新建项目看不到.NET8选项,连部署目标都没了,试过卸载重装SDK/VS、workload命令、maui-check也失效。
结合我之前踩过的类似坑,给你几个针对性的排查和解决方向:
1. 先确认VS版本是否适配.NET8
这是很多人忽略的关键!.NET8要求VS 2022必须升级到17.8及以上版本(Windows和Mac都是)。如果你的VS版本低于这个,就算装了.NET8 SDK,新建项目也看不到.NET8选项,而且workload的识别也会出问题:
- Windows:打开VS安装程序,检查是否有可用更新,直接升级到最新稳定版;
- Mac:打开VS for Mac,通过「Visual Studio > Check for Updates」升级到最新版本。
2. 彻底修复MAUI Workload
卸载重装SDK后workload可能还是有残留或安装不完整,试试这些命令:
- 先清理本地NuGet缓存,避免旧包干扰:
dotnet nuget locals all --clear - 列出当前已安装的workload,确认maui、maui-ios、maui-android是否真的在列表里:
dotnet workload list - 如果缺失,指定NuGet官方源重新安装(有时候默认源会有同步延迟):
dotnet workload install maui maui-ios maui-android --source https://api.nuget.org/v3/index.json - 如果已经安装但还是报错,尝试修复workload:
dotnet workload repair maui
3. 检查VS的MAUI组件是否完整安装
有时候VS安装时默认没勾选全MAUI的相关组件,导致平台识别失败:
- Windows:打开VS安装程序,找到已安装的「Visual Studio 2022」,点击「修改」,在「工作负载」里勾选「.NET Multi-platform App UI开发」,然后展开右侧的「可选组件」,确保「iOS开发工具」「Android开发工具」等相关组件都勾选上,再点击「修改」完成安装;
- Mac:打开VS for Mac,通过「Visual Studio > Preferences > SDK Locations > .NET MAUI」检查iOS和Android的SDK路径是否正确,或者直接重新安装MAUI组件。
4. 手动检查并修正项目文件
新建项目如果生成的目标框架有问题,手动编辑.csproj文件:
- 确认目标框架节点是否正确:
<TargetFrameworks>net8.0-android;net8.0-ios;</TargetFrameworks> - 可以添加对应的平台版本配置(比如iOS最低版本设为16.4,适配.NET8的要求):
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">16.4</SupportedOSPlatformVersion> <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">33.0</SupportedOSPlatformVersion> - 保存后重新加载项目,清理解决方案再重新生成。
5. 关于maui-check的替代方案
确实maui-check有时候会出现各种奇怪的报错(比如你遇到的zsh killed),官方现在也更推荐用dotnet workload系列命令来管理MAUI环境,所以不用纠结maui-check,用上面的workload命令就足够了。
如果以上步骤都试过还是不行,可以试试删除项目的.vs、bin、obj文件夹,然后重新打开项目,再运行dotnet restore,有时候缓存文件损坏也会导致这类识别问题。
备注:内容来源于stack exchange,提问作者Ben Price

