MAUI Blazor Hybrid应用上传App Store遇90270与90259错误求助
问题背景
我们的Blazor MAUI Hybrid应用已处于生产环境,此前使用Transporter向App Store上传新版本一切正常,但现在操作时出现以下错误:
Asset validation failed (90270)
Unsupported toolchain. Packages submitted to the App Store must be created either through Xcode, or using the productbuild[1] tool, as described in "Submitting your Mac apps to the App Store." Packages created by other tools, including PackageMaker, are not acceptable. [SIS] (ID:...)Asset validation failed (90259)
Bad Bundle Executable. You must include a valid CFBundleExecutable key in your bundle's information property list file. (ID: ...)
使用环境:macOS 14的Azure DevOps托管代理,通过Xcode 15.4编译应用。曾尝试在info.plist中设置CFBundleExecutable值为RootNamespace,但仍无法解决上述错误:
<key>CFBundleExecutable</key> <string>Company.My.App</string>
解决建议
针对错误90270(Unsupported toolchain)
- 检查Azure DevOps编译任务,确保使用Xcode官方归档流程:通过
xcodebuild archive生成归档文件,再用xcodebuild -exportArchive导出安装包,避免依赖第三方打包工具。 - 确认托管代理上的Xcode 15.4为官方稳定版,beta版本可能存在工具链兼容性问题,必要时切换到正式版。
- 更新Transporter到最新版本,旧版本可能无法正确识别Xcode 15.4生成的包结构。
针对错误90259(Bad Bundle Executable)
- 修正CFBundleExecutable值:该字段对应应用的可执行文件名称,而非RootNamespace。MAUI项目中,可执行文件名通常与项目的
AssemblyName一致(不带命名空间前缀)。例如AssemblyName为MyApp,则配置应为:<key>CFBundleExecutable</key> <string>MyApp</string> - 确认info.plist路径:MacCatalyst平台的info.plist必须放在
Platforms/MacCatalyst目录下,根目录的通用info.plist不会被MacCatalyst编译流程读取。 - 添加验证步骤:在Azure DevOps中,用
plutil命令检查归档包内的info.plist是否包含正确的CFBundleExecutable值:plutil -p "$ARCHIVE_PATH/Contents/Info.plist" | grep CFBundleExecutable - 清理代理缓存:删除Azure DevOps代理上的旧编译产物,重新执行完整的编译归档流程,避免缓存配置干扰。
额外排查点
- 对比历史成功版本的项目配置,检查AssemblyName、打包方式等是否有变更,尤其是MAUI SDK或Xcode版本升级后的配置差异。
- 在本地macOS 14 + Xcode 15.4环境手动编译归档并上传,排查是否为Azure DevOps托管代理的环境配置问题。
内容的提问来源于stack exchange,提问作者Smith5727

