M1 Pro Mac虚拟机安装VS2022 17.3 MAUI workload遇构建错误
环境与问题现象
- 运行环境:14寸M1 Pro Mac(Monterey系统),通过Parallels创建Windows 11 ARM虚拟机,安装Visual Studio 2022 17.3正式版并勾选MAUI workload,安装无报错。
- 问题:VS启动后未显示MAUI模板,执行
dotnet new --install Microsoft.Maui.Templates后模板出现,但创建项目时失败,报错如下:
Nuget还原错误
级别 代码 描述 项目 文件 行 抑制状态
错误 NETSDK1139 未识别目标平台标识符 android。 MauiApp1 C:\Program Files\dotnet\sdk\6.0.400\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets 112
错误 NETSDK1139 未识别目标平台标识符 ios。 MauiApp1 C:\Program Files\dotnet\sdk\6.0.400\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets 112
错误 NETSDK1139 未识别目标平台标识符 maccatalyst。 MauiApp1 C:\Program Files\dotnet\sdk\6.0.400\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets 112
错误 NU1012 一个或多个目标框架缺少平台版本,尽管已指定平台:net6.0-android, net6.0-ios, net6.0-maccatalyst MauiApp1 C:\xx\MauiApp1\MauiApp1.csproj 1
错误 NU1012 一个或多个目标框架缺少平台版本,尽管已指定平台:net6.0-android, net6.0-ios, net6.0-maccatalyst MauiApp1 C:\xx\MauiApp1\MauiApp1.csproj 1
错误 NU1012 一个或多个目标框架缺少平台版本,尽管已指定平台:net6.0-android, net6.0-ios, net6.0-maccatalyst MauiApp1 C:\xx\MauiApp1\MauiApp1.csproj 1
构建错误
1>------ 已启动生成: 项目: MauiApp1, 配置: Debug Any CPU ------
1>C:\Program Files\dotnet\sdk\6.0.400\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(112,5): 错误 NETSDK1139: 未识别目标平台标识符 android。
1>生成项目 "MauiApp1.csproj" -- 失败。
1>C:\Program Files\dotnet\sdk\6.0.400\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(112,5): 错误 NETSDK1139: 未识别目标平台标识符 ios。
1>生成项目 "MauiApp1.csproj" -- 失败。
1>C:\Program Files\dotnet\sdk\6.0.400\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(112,5): 错误 NETSDK1139: 未识别目标平台标识符 maccatalyst。
1>生成项目 "MauiApp1.csproj" -- 失败。
========== 生成: 0 成功,1 失败,0 最新,0 已跳过 ==========
解决方案
安装缺失的.NET平台工作负载
打开命令提示符,执行以下命令,确保Android、iOS、MacCatalyst的工作负载正确安装到Windows 11 ARM环境中:dotnet workload install android ios maccatalyst验证.NET SDK版本兼容性
确认.NET SDK 6.0.400与VS2022 17.3的MAUI组件兼容,若仍有问题,升级到.NET SDK 6.0.402或更高的兼容版本。修改项目文件指定明确平台版本
打开项目的.csproj文件,更新目标框架配置,添加明确的平台版本号,示例如下:<TargetFrameworks>net6.0-android;net6.0-ios;net6.0-maccatalyst;net6.0-windows10.0.19041.0</TargetFrameworks> <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net6.0-windows10.0.19041.0</TargetFrameworks> <AndroidSdkVersion>33</AndroidSdkVersion> <iOSSdkVersion>15.4</iOSSdkVersion> <MacCatalystSdkVersion>15.4</MacCatalystSdkVersion>清理并重新还原Nuget包
在Visual Studio中依次执行「清理解决方案」→「还原Nuget包」,完成后重新尝试构建项目。确认Parallels虚拟机ARM兼容性
检查Parallels虚拟机设置,确保启用「ARM原生」模式,避免架构不匹配导致平台识别失败。
内容的提问来源于stack exchange,提问作者Temis Roa

