C# MAUI项目怎么进行多目标平台编译 MAUI TargetFrameworks配置

19次阅读

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

C# MAUI项目怎么进行多目标平台编译 MAUI TargetFrameworks配置

MAUI 项目通过 TargetFrameworks 属性实现多平台编译,只需在项目文件(.csproj)中正确配置目标框架即可,无需额外插件或脚本。

支持的 TargetFrameworks 值

MAUI 官方支持以下目标框架(注意大小写和版本号):

  • net8.0-android — Android 平台(需安装 Android SDK 和工作负载)
  • net8.0-ios — iOS 平台(仅 macOS,需 xcodeapple 开发者工具
  • net8.0-maccatalystmacos(通过 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 需额外启用 true(可选)且构建较慢,建议按需添加。

条件编译与平台专用代码

多目标后,可用预处理器指令区分平台逻辑:

  • #if ANDROID / #elif IOS / #elif WINDOWS / #elif MACCATALYST
  • 对应常量由 SDK 自动定义,无需手动设置
  • 平台专属资源(如图标、权限声明)放在各平台子目录下:Platforms/Android/AndroidManifest.xmlPlatforms/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 会自动识别多平台,并在生成菜单中提供对应目标选项。不复杂但容易忽略大小写和分号格式。

text=ZqhQzanResources