使用VS2022构建MAUI Android发布版报XABBA7009错误求助
MAUI Android发布版构建XABBA7009错误排查思路
问题场景
使用Visual Studio 17.5.3开发MAUI应用,调试版可正常为Android模拟器构建,但发布版构建时触发以下错误:
Error XABBA7009: System.InvalidOperationException: PE image does not have metadata. at System.Reflection.PortableExecutable.PEReader.GetMetadataBlock() at System.Reflection.Metadata.PEReaderExtensions.GetMetadataReader(PEReader peReader, MetadataReaderOptions options, MetadataStringDecoder utf8Decoder) at Xamarin.Android.Tasks.MonoAndroidHelper.IsReferenceAssembly(String assembly) at Xamarin.Android.Tasks.BuildApk.<AddAssemblies>g__AddAssembliesFromCollection|152_0(ITaskItem[] assemblies, <>c__DisplayClass152_0& ) at Xamarin.Android.Tasks.BuildApk.AddAssemblies(ZipArchiveEx apk, Boolean debug, Boolean compress, IDictionary`2 compressedAssembliesInfo, String assemblyStoreApkName) at Xamarin.Android.Tasks.BuildApk.ExecuteWithAbi(String[] supportedAbis, String apkInputPath, String apkOutputPath, Boolean debug, Boolean compress, IDictionary`2 compressedAssembliesInfo, String assemblyStoreApkName) at Xamarin.Android.Tasks.BuildApk.RunTask() at Microsoft.Android.Build.Tasks.AndroidTask.Execute() in /Users/runner/work/1/s/xamarin-android/external/xamarin-android-tools/src/Microsoft.Android.Build.BaseTasks/AndroidTask.cs:line 17 0
已尝试清理构建、更新工作负载/库/软件、清空NuGet缓存重装包,问题仍存在。
排查思路
- 定位异常PE文件:
- 开启构建详细日志:在Visual Studio中依次点击「工具」→「选项」→「项目和解决方案」→「生成并运行」,将「MSBuild项目生成输出详细程度」设为「详细」或「诊断」。
- 重新触发发布构建,在日志中搜索
AddAssemblies或XABBA7009关键词,找到构建过程中正在处理的最后一个程序集,该程序集大概率是无元数据的异常PE文件。
- 验证程序集完整性:
针对定位到的程序集,使用ildasm.exe(位于.NET SDK目录,如C:\Program Files\dotnet\sdk\<版本号>\ildasm.exe)打开,检查是否能正常读取元数据。若无法读取,说明该程序集已损坏。 - 排查NuGet包依赖:
- 检查项目依赖的NuGet包,尤其是第三方包,确认是否存在针对发布版的异常打包逻辑。
- 尝试临时移除可疑第三方包,重新构建发布版,若问题消失则锁定该包为根源,联系包作者或更换替代包。
- 检查自定义构建任务/脚本:
若项目包含自定义MSBuild任务或预处理脚本,确认是否在发布版构建过程中修改了程序集文件,导致PE元数据丢失。 - 验证目标框架与ABI设置:
检查项目发布配置中,Android的目标框架和ABI架构设置是否与调试版一致,避免因架构不兼容导致程序集处理异常。 - 手动清理构建输出目录:
直接删除项目的bin和obj目录,以及解决方案级的bin目录,再重新构建发布版,排除残留的损坏文件影响。
内容的提问来源于stack exchange,提问作者cfischy
相关产品推荐
相关产品推荐

