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

.NET MAUI iOS应用发布失败:xcrun执行退出码139求助

解决dotnet publish iOS包时strip退出码139的问题

问题重现

执行以下发布命令时触发错误:

dotnet publish "/SomeDirectory/MyApp/MyApp.csproj" -f net8.0-ios -c Release -p:ArchiveOnBuild=true -p:RuntimeIdentifier=ios-arm64  -p:CodesignKey="Apple Distribution: SAMPLE MY APP (RT1234543)" -p:CodesignProvision="sample 25 03 25"

返回错误信息:

Tool xcrun execution finished (exit code = 139)
usr/local/share/dotnet/packs/Microsoft.iOS.Sdk.net8.0_18.0/18.0.8319/tools/msbuild/iOS/Xamarin.Shared.targets(2848,3): error : strip exited with code 139

dotnet build可正常生成.app包,但签名后因缺少配置文件被App Store Connect拒绝,环境配置:

  • dotnet 8.0.407
  • dotnet workload SDK 8.0.400
  • macOS Sonoma (14.7.1)
  • Xcode 16.1

解决方案

1. 匹配Xcode与.NET iOS SDK版本

Xcode 16.1对应iOS 18.1,当前使用的Microsoft.iOS.Sdk 18.0.8319版本不兼容,会导致工具链运行错误。更新.NET iOS workload到适配版本:

dotnet workload update ios

更新后确认workload版本与Xcode版本匹配。

2. 跳过自动strip符号处理

exit code 139是strip工具的段错误,可在发布命令中添加参数跳过自动符号剥离:

dotnet publish "/SomeDirectory/MyApp/MyApp.csproj" -f net8.0-ios -c Release -p:ArchiveOnBuild=true -p:RuntimeIdentifier=ios-arm64  -p:CodesignKey="Apple Distribution: SAMPLE MY APP (RT1234543)" -p:CodesignProvision="sample 25 03 25" -p:StripSymbols=false

生成包后可手动处理符号,或直接提交(App Store接受未strip的包)。

3. 修正配置文件参数

用配置文件的UUID替代名称作为CodesignProvision参数值,避免空格或特殊字符导致的匹配失败:

  1. 打开Xcode → 偏好设置 → 账号 → 查看详情 → 找到对应配置文件并复制UUID
  2. 修改命令为-p:CodesignProvision=配置文件UUID

4. 清理缓存重试

清理项目和工具链缓存,排除旧文件干扰:

  • 删除项目根目录下的bin和obj文件夹
  • 执行清理命令:
dotnet clean "/SomeDirectory/MyApp/MyApp.csproj" -f net8.0-ios -c Release
  • 清理Xcode缓存:打开Xcode → 设置 → 位置 → 点击DerivedData旁的箭头,删除对应项目的缓存文件夹

5. 手动归档提交

若上述方法无效,改用Xcode手动归档:

  1. 执行dotnet build生成.app包
  2. 打开Xcode,选择Window → Organizer
  3. 点击Import,导入生成的.app包所在的归档目录
  4. 选中导入的归档,点击Distribute App,按向导完成签名和提交

内容的提问来源于stack exchange,提问作者Keletso Botsalano

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:14:59