You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Azure DevOps Pipeline构建.NET MAUI iOS应用遇版本兼容问题

解决Azure DevOps Pipeline构建.NET MAUI iOS时Xcode版本不匹配问题

问题核心

使用Azure DevOps托管macOS代理(Macos-15/macos-26)构建.NET MAUI iOS应用时,dotnet workload install会自动拉取最新的.NET for iOS SDK(版本26.4.9015),但该版本要求的Xcode 26.4尚未在托管代理中提供;切换至Xcode 26.3/26.0.1时,又会因为.NET for iOS版本过高而触发版本不兼容报错。

可行解决方案

1. 固定.NET for iOS工作负载版本到代理兼容的Xcode版本

不要直接执行dotnet workload install,而是指定与代理现有Xcode版本匹配的.NET for iOS工作负载版本。比如代理中存在Xcode 26.3,就安装对应大版本的.NET for iOS(26.3.x)。

修改流水线步骤如下:

steps:
- task: UseDotNet@2
  displayName: 'Use .NET Core SDK 9.0.300'
  inputs:
    version: 9.0.300

- script: |
    # 指定代理中存在的Xcode路径,示例为Xcode 26.3
    sudo xcode-select -s /Applications/Xcode_26.3.app
    # 安装与Xcode匹配的.NET for iOS工作负载版本
    dotnet workload install ios --version 26.3.9014
  displayName: 'Set Xcode Version & Install Compatible MAUI Workload'

2. 先确认代理中可用的Xcode版本

在流水线开头添加步骤,列出代理中所有已安装的Xcode目录,避免指定不存在的路径:

- script: |
    ls -la /Applications/ | grep Xcode
  displayName: 'List Available Xcode Versions on Agent'

执行后可获取代理中实际存在的Xcode目录名称,比如Xcode_26.3.app、Xcode_26.0.1.app,再用对应路径执行xcode-select。

3. 项目层面禁用工作负载自动更新

在项目根目录的Directory.Build.props文件中添加配置,强制使用指定版本的.NET for iOS,防止流水线自动拉取最新版本:

<Project>
  <PropertyGroup>
    <MauiIosSdkVersion>26.3.9014</MauiIosSdkVersion>
  </PropertyGroup>
</Project>

关键注意点

  • .NET for iOS与Xcode版本存在严格对应关系,必须保证两者大版本一致(如Xcode 26.3对应.NET for iOS 26.3.x系列)
  • Azure DevOps托管代理的Xcode版本更新有延迟,不要盲目使用最新的.NET工作负载,先确认代理可用的Xcode版本再匹配对应工作负载

内容的提问来源于stack exchange,提问作者Vinoth Swami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 01:33:10