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

使用Dotnet CLI发布.NET MAUI iOS应用时出现ASN1损坏数据错误

.NET MAUI iOS发布报错:ASN1 corrupted data

执行的发布命令:

dotnet publish -f net8.0-ios -c Release -p:ArchiveOnBuild=true -p:RuntimeIdentifier=ios-arm64  -p:CodesignKey="Apple Distribution: XXXXXXXXX (123456789)" -p:CodesignProvision="myprofile"

报错信息:

/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk/17.2.8022/tools/msbuild/iOS/Xamarin.Shared.targets(1805,3): error : ASN1 corrupted data. [/Users/david/RiderProjects/App/App.Mobile/App.Mobile.csproj::TargetFramework=net8.0-ios]

已知背景:

  • 具备iOS部署及Xamarin开发经验,证书、配置文件已配置完成
  • CI/CD流水线使用相同命令和证书可正常构建发布
  • 本地Mac M1设备,测试不同IDE均出现相同问题
  • 模拟器构建测试及Android发布无异常,推测问题与签名流程相关

调试解决建议

  • 检查本地证书存储完整性
    打开Keychain Access,找到对应的Apple Distribution证书,右键选择「显示简介」,确认证书无有效性警告(如“此证书的有效性未知”)。若存在异常,删除证书后重新导入CI/CD使用的相同证书文件,确保导入过程无密码错误或文件损坏。

  • 验证配置文件与证书匹配性
    双击打开myprofile配置文件(通过Xcode),确认配置文件关联的发布证书与本地Keychain中的证书完全匹配(核对证书序列号、组织ID)。若配置文件是旧版本,重新从Apple Developer Portal下载最新版本替换本地文件。

  • 清理本地构建缓存
    删除以下目录的缓存文件,避免损坏缓存干扰流程:

    • 项目根目录下的bin和obj文件夹
    • ~/.nuget/packages中对应Microsoft.iOS.Sdk的17.2.8022版本目录
    • ~/Library/Caches/Xamarin/mtbs目录
      清理完成后重新执行发布命令。
  • 用证书哈希值替代名称参数
    证书名称中的特殊字符可能导致解析问题,尝试用SHA-1哈希值替换CodesignKey参数:

    1. 在Keychain Access中找到目标证书,右键选择「获取信息」
    2. 复制「指纹」栏的SHA-1值(去掉空格)
    3. 修改发布命令:
      dotnet publish -f net8.0-ios -c Release -p:ArchiveOnBuild=true -p:RuntimeIdentifier=ios-arm64  -p:CodesignKey="SHA-1哈希值" -p:CodesignProvision="myprofile"
      
  • 启用详细构建日志排查
    在发布命令中添加-v diag参数获取完整日志:

    dotnet publish -f net8.0-ios -c Release -p:ArchiveOnBuild=true -p:RuntimeIdentifier=ios-arm64  -p:CodesignKey="Apple Distribution: XXXXXXXXX (123456789)" -p:CodesignProvision="myprofile" -v diag
    

    重点查看日志中与codesign、security命令相关的输出,定位签名流程中具体出错的环节。

  • 对齐本地与CI环境的SDK版本
    确认本地安装的.NET SDK、Microsoft.iOS.Sdk版本与CI/CD环境完全一致。若版本存在差异,升级或降级本地SDK包,消除版本不匹配导致的签名逻辑差异。

  • 手动测试codesign命令签名
    导出一个测试IPA包(可基于模拟器构建包修改),手动执行签名命令验证本地工具链:

    codesign -fs "Apple Distribution: XXXXXXXXX (123456789)" --entitlements Entitlements.plist YourApp.app
    

    若手动签名也报错,说明本地证书或签名工具存在问题;若手动签名成功,则问题可能出在.NET MAUI的构建脚本逻辑中。

内容的提问来源于stack exchange,提问作者TaiT's

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:02:44