Release构建报错:无法加载Xamarin.AndroidX.AppCompat程序集
解决Release构建时XAGJS7028:找不到Xamarin.AndroidX.AppCompat程序集的问题
错误详情:
| 级别 | 代码 | 描述 | 项目 | 文件 | 行号 | 抑制状态 |
|---|---|---|---|---|---|---|
| 错误 | XAGJS7028 | System.IO.FileNotFoundException: 无法加载程序集 'Xamarin.AndroidX.AppCompat, Version=1.0.0.0, Culture=neutral, PublicKeyToken='。它可能不存在于Mono for Android配置文件中? 文件名: 'Xamarin.AndroidX.AppCompat.dll' 堆栈跟踪: at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/DirectoryAssemblyResolver.cs:line 245 at Mono.Cecil.MetadataResolver.Resolve(TypeReference type) in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/cecil/Mono.Cecil/MetadataResolver.cs:line 111 at Mono.Cecil.TypeReference.Resolve() in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/cecil/Mono.Cecil/TypeReference.cs:line 278 at Java.Interop.Tools.Cecil.TypeDefinitionCache.Resolve(TypeReference typeReference) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/TypeDefinitionCache.cs:line 20 at Java.Interop.Tools.Cecil.TypeDefinitionRocks.d__5.MoveNext() in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/TypeDefinitionRocks.cs:line 40 at Java.Interop.Tools.Cecil.TypeDefinitionRocks.IsSubclassOf(TypeDefinition type, String typeName, IMetadataResolver resolver) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/TypeDefinitionRocks.cs:line 94 at Java.Interop.Tools.JavaCallableWrappers.JavaTypeScanner.AddJavaTypes(List 1 javaTypes, TypeDefinition type) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers/JavaTypeScanner.cs:line 581 assemblies, IAssemblyResolver resolver) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers/JavaTypeScanner.cs:line 48at Xamarin.Android.Tasks.GenerateJavaStubs.Run(DirectoryAssemblyResolver res) at Xamarin.Android.Tasks.GenerateJavaStubs.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 | ReviewRev.Droid | C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\33.0.68\tools\Xamarin.Android.Common.targets | 1476 |
该问题仅在Release构建时触发,Debug构建可正常运行。
解决方案:
检查并更新AndroidX AppCompat NuGet包
确认项目已安装Xamarin.AndroidX.AppCompat包,且版本与其他AndroidX包兼容。右键项目→管理NuGet程序包,找到该包:- 若未安装则直接安装;
- 若已安装,检查版本是否过时,更新至稳定版,同时确保依赖的其他AndroidX包版本匹配,避免版本冲突。
调整Release模式的链接器设置
Release模式下链接器可能误删必要程序集:- 右键项目→属性→Android选项;
- 在“链接器”区域,将链接行为改为
Sdk程序集仅(优先推荐)或不链接(测试用); - 若需要精细控制,可添加链接器描述文件,明确保留
Xamarin.AndroidX.AppCompat相关类型。
清理并重建项目
- 点击菜单→生成→清理解决方案;
- 手动删除项目根目录下的
bin和obj文件夹; - 重新切换到Release模式,执行构建操作。
检查项目文件的程序集引用
手动编辑项目的.csproj文件,确认Xamarin.AndroidX.AppCompat的引用没有被条件限制为仅Debug模式。确保类似以下的引用没有带Condition=" '$(Configuration)' == 'Debug' ":<PackageReference Include="Xamarin.AndroidX.AppCompat" Version="1.6.1.1" />更新Android SDK及构建工具
打开Android SDK管理器,确保:- Android 33对应的SDK平台已安装;
- AndroidX相关的构建工具、支持库均为最新版本;
- 项目的目标框架版本与SDK版本匹配。
内容的提问来源于stack exchange,提问作者SutharSan
相关产品推荐
相关产品推荐

