MAUI 项目通过 TargetFrameworks 属性实现多平台编译,需在。csproj 中配置 net8.0-android;net8.0-ios;net8.0-maccatalyst;net8.0-windows10.0.19041.0 等框架,支持条件编译与平台专属资源管理。

MAUI 项目通过 TargetFrameworks 属性实现多平台编译,只需在项目文件(.csproj)中正确配置目标框架即可,无需额外插件或脚本。
支持的 TargetFrameworks 值
MAUI 官方支持以下目标框架(注意大小写和版本号):
- net8.0-android — Android 平台(需安装 Android SDK 和工作负载)
- net8.0-ios — iOS 平台(仅 macOS,需 Xcode 和 Apple 开发者 工具)
- net8.0-maccatalyst — macOS(通过 Catalyst 运行 iOS 代码)
- net8.0-windows10.0.19041.0 — Windows(WinUI 3,最低系统要求 Win10 2004)
- net8.0-browser — WebAssembly(Blazor Hybrid 模式,运行在 浏览器 中)
在 .csproj 中配置多目标框架
打开项目文件(如 MyApp.Maui.csproj),将 TargetFramework 改为 TargetFrameworks(复数),并用分号分隔多个框架:
net8.0-android;net8.0-ios;net8.0-maccatalyst;net8.0-windows10.0.19041.0
? 提示:若只开发部分平台,不必全写;例如只做 安卓+Windows,就只保留前两个。WebAssembly 需额外启用 (可选)且构建较慢,建议按需添加。
条件编译与平台专用代码
多目标后,可用预 处理器 指令区分平台逻辑:
-
#if ANDROID/#elif IOS/#elif WINDOWS/#elif MACCATALYST - 对应常量由 SDK 自动定义,无需手动设置
- 平台专属资源(如图标、权限声明)放在各平台子目录下:
Platforms/Android/AndroidManifest.xml、Platforms/iOS/Info.plist等
构建与发布注意事项
命令行构建时指定平台可提升效率(尤其 CI/CD 场景):
-
dotnet build -t:Restore— 先恢复所有平台依赖 -
dotnet build -f net8.0-android— 只构建安卓版 -
dotnet publish -f net8.0-windows10.0.19041.0 -c Release— 发布 Windows 版本
⚠️ 注意:iOS 构建必须在 macOS 上进行;Windows 平台需安装 Microsoft.Windows.CsWin32 和 WinUI 3 工作负载;Android 需配置 JDK 17+ 和 Android SDK 路径。
基本上就这些。配置正确后,VS 或 VS for Mac 会自动识别多平台,并在生成菜单中提供对应目标选项。不复杂但容易忽略大小写和分号格式。