Xamarin Android原生项目升级MAUI后遇XALNS7028程序集加载错误
解决XALNS7028:无法加载Xamarin.Android.Support.v7.RecyclerView程序集问题
错误详情
严重性:活动错误
代码:XALNS7028
描述:System.IO.FileNotFoundException: 无法加载程序集‘Xamarin.Android.Support.v7.RecyclerView, Version=1.0.0.0, Culture=neutral, PublicKeyToken=’。该程序集可能不存在于Mono for Android配置文件中?
文件名: 'Xamarin.Android.Support.v7.RecyclerView.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 278 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/TypeDefinition.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 36 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 87 at MonoDroid.Tuner.FixAbstractMethodsStep.FixAbstractMethods(AssemblyDefinition assembly) at Xamarin.Android.Tasks.LinkAssembliesNoShrink.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 25 项目:OjtApp (net8.0-android) 文件:C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\34.0.113\tools\Xamarin.Android.Common.targets 行:1481
解决方案
1. 替换旧Xamarin支持包为AndroidX
net8.0-android已全面迁移到AndroidX,旧的Xamarin.Android.Support.*包已被弃用:
- 在NuGet包管理器中卸载所有包含
Xamarin.Android.Support的包 - 安装替代的AndroidX包:
Xamarin.AndroidX.RecyclerView - 批量替换代码中的命名空间引用:将
Android.Support.V7.Widget.RecyclerView改为AndroidX.RecyclerView.Widget.RecyclerView
2. 清理并重建项目
- 删除项目根目录下的
bin和obj文件夹 - 执行命令:
dotnet clean清理项目缓存 - 重新编译项目:
dotnet build
3. 匹配框架与SDK版本
- 打开项目属性,确认目标框架为
net8.0-android - 检查Android SDK Manager中是否安装了34版本SDK(与项目依赖的
Microsoft.Android.Sdk.Windows 34.0.113对应),缺失则补充安装
4. 手动修复项目文件引用
- 打开项目的
.csproj文件,删除所有指向Xamarin.Android.Support.v7.RecyclerView的引用标签 - 添加正确的AndroidX包引用:
版本号可根据最新稳定版调整<PackageReference Include="Xamarin.AndroidX.RecyclerView" Version="1.3.2.3" />
5. 调整链接器设置
- 打开项目属性 → Android选项 → 链接器行为
- 将链接器模式从“链接所有程序集”改为“仅链接SDK程序集”或“不链接”,尝试重新编译
- 若需保留链接优化,在
Linker.xml中添加规则:<assembly fullname="Xamarin.AndroidX.RecyclerView"> <type fullname="AndroidX.RecyclerView.Widget.RecyclerView" preserve="all" /> </assembly>
内容的提问来源于stack exchange,提问作者Lalit Chauhan
相关产品推荐
相关产品推荐

