MAUI CI/CD核心是分平台构建与签名:iOS/macOS需macOS+Xcode,Android推荐Linux/macOS,Windows需VS2022;流程分CI(编译测试)、CD(分平台打包签名)、Release(上架)三阶段,关键在环境、证书、版本统一和工具链配置。

MAUI 项目做 CI/CD,核心是解决跨平台构建、多目标平台(Windows/macOS/iOS/Android)打包、签名、测试和发布的一致性问题。它比纯 Web 或 .NET 后端项目更复杂,因为依赖操作系统级工具链(如 Xcode、Android SDK、Visual Studio)、证书和配置。但只要理清关键环节,流程并不难落地。
构建环境必须匹配目标平台
MAUI 不支持“一次构建、到处打包”。不同平台必须在对应操作系统上构建:
- iOS/macOS 构建必须用 macOS(含 Xcode),不能用 Windows 或 Linux 代理机
- Android 构建推荐用 Linux 或 macOS(Windows 也可,但易遇 JDK/SDK 路径或权限问题)
- Windows 桌面(WinUI3)和 WPF 风格构建必须用 Windows + Visual Studio 2022(17.4+)或 MSBuild 工具集
- macOS 上需提前配置好 Apple Developer Account、Provisioning Profiles 和 Signing Certificates,并通过
dotnet msbuild或xcodebuild调用
流水线分阶段设计:CI → CD → Release
建议按三段式拆分,避免单一流水线卡死所有平台:
-
CI 阶段(触发即跑):拉代码 → restore → 编译所有平台项目(
dotnet build -t:Restore,Build -p:Configuration=Debug)→ 运行单元测试(xUnit/NUnit)→ 执行静态分析(如 SonarQube) -
CD 阶段(手动/条件触发):仅对
main或release/*分支运行 → 分平台并行打包(Android AAB/APK、iOS IPA、Windows APPX、macOS PKG)→ 自动签名(用密钥保管库管理 p12/cert/p8 文件)→ 上传制品到 Azure Artifacts / GitHub Packages / S3 - Release 阶段(人工确认后执行):下载对应平台制品 → 推送到 App Store Connect(iOS/macOS)、Google Play Console(Android)、Microsoft Partner Center(Windows)→ 自动提交审核或发布到内部测试轨道
关键配置与避坑点
这些细节不处理好,90% 的 MAUI CI/CD 会失败:
-
Android:确保 pipeline agent 安装了 JDK 17、Android SDK(platforms;android-34、build-tools;34.0.0)、NDK(r25c)、.NET SDK 8.0+;
ANDROID_HOME和JAVA_HOME环境变量必须显式设置 -
iOS:macOS agent 必须启用“自动管理签名”或提前导入证书到钥匙串(
security unlock-keychain);使用--configuration Release --self-contained true参数生成可分发 IPA -
Windows:禁用 VS 自动更新,固定使用已验证的 VS 版本(如 vs2022 v17.8.5);启用
DesktopBridge支持,打包前运行msbuild /t:Publish /p:PublishProfile=win10-x64 -
版本号统一:用
Directory.Build.props统一定义VersionPrefix和AssemblyVersion,再通过 pipeline 变量注入(如$(Build.BuildNumber))
推荐工具链组合
轻量可控、企业友好、文档完善:
- 代码托管:GitHub(支持 Actions 原生 macOS/Windows/Linux runner)或 Azure Repos(集成 DevOps Pipeline 更深)
- CI/CD 引擎:GitHub Actions(免费 macOS runner,适合小团队)或 Azure Pipelines(支持自托管 macOS agent,适合合规要求高场景)
- 制品管理:GitHub Packages(简单)或 Azure Artifacts(支持符号包、NuGet、通用包,权限粒度细)
- 签名与密钥:Azure Key Vault(Windows/macOS)、Apple Developer Portal + Fastlane match(iOS/macOS)、Google Play Signing(Android)
基本上就这些。MAUI 的 CI/CD 不是“能不能做”,而是“敢不敢把环境配全、证书管住、平台分开”。配通一个平台(比如 Android),其他平台就是复制逻辑+换 agent+调参数。别贪快,先跑通 iOS 或 Windows 单平台全流程,再横向扩展。










