如何在Azure DevOps CmdLine@2任务中指定旧版本.NET Maui?
解决Azure DevOps中指定安装旧版本.NET Maui的问题
问题背景
.NET Maui更新后,新版本依赖microsoft.net.sdk.ios 16.1.1481,需要Xcode 14.1及iOS 16.1 SDK支持,但macos-12镜像自带的Xcode版本不满足,导致iOS应用构建失败。之前尝试用dotnet workload install --sdk-version 7.0.1xx maui无法解决问题,以下是可行方案:
可行解决方案
方案一:通过回滚元数据文件安装兼容版本
微软官方为各版本Maui提供了回滚元数据文件,这些文件包含适配不同环境的配置。我们可以利用这类文件安装适配macos-12镜像的旧版本Maui:
- 先卸载当前已安装的Maui workload,避免版本冲突
- 找到对应兼容版本的回滚元数据文件路径,替换到命令中(例如7.0.109版本的回滚文件,其依赖的iOS SDK兼容macos-12自带的Xcode)
修改后的Azure DevOps CmdLine@2任务配置如下:
- task: CmdLine@2 displayName: '安装兼容macos-12的旧版Maui' inputs: script: | # 卸载现有Maui workload dotnet workload uninstall maui # 通过官方回滚配置安装指定版本的Maui dotnet workload install maui --from-rollback-file [对应版本的回滚元数据文件路径]
方案二:直接指定Maui版本号安装
如果你明确知道兼容的Maui版本号(比如7.0.109,该版本依赖的iOS SDK适配macos-12镜像),可以直接通过--version参数指定安装:
修改后的任务配置:
- task: CmdLine@2 displayName: '安装指定版本的.NET Maui' inputs: script: | dotnet workload uninstall maui dotnet workload install maui --version 7.0.109
版本选择说明
要确认哪个Maui版本兼容macos-12镜像,可遵循以下逻辑:
- macos-12镜像默认搭载Xcode 13.4.1,对应iOS 15.4 SDK
- 选择依赖
microsoft.net.sdk.ios版本≤15.4.x的Maui版本,比如7.0.109、7.0.108等 - 可通过Maui官方发布历史确认各版本对应的依赖组件版本
验证安装结果
安装完成后,可添加一个CmdLine任务验证版本是否正确:
- task: CmdLine@2 displayName: '检查Maui Workload版本' inputs: script: 'dotnet workload list'
内容的提问来源于stack exchange,提问作者Dumber_Texan2
相关产品推荐
相关产品推荐

