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

使用Visual Studio发布Xamarin.Android应用时遇Mono.Linker报错求助

Xamarin发布时Mono.Linker.MarkException错误(Plugin.CloudFirestore相关)

我用Xamarin和C#开发的应用,在Visual Studio 2019/2022执行发布操作时触发以下错误,但调试模式下(实体手机或Android模拟器)运行完全正常。已尝试更新所有依赖包至最新版本、删除Bin和Obj文件夹,问题仍未解决:

Mono.Linker.MarkException: Error processing method: 'System.Void Plugin.CloudFirestore.FirestoreSettings::.cctor()' in assembly: 'Plugin.CloudFirestore.dll' ---> Mono.Cecil.ResolutionException: Failed to resolve System.Boolean Firebase.Firestore.FirebaseFirestoreSettings::AreTimestampsInSnapshotsEnabled()
   at Mono.Linker.Steps.MarkStep.HandleUnresolvedMethod(MethodReference reference)
   at Mono.Linker.Steps.MarkStep.MarkMethod(MethodReference reference)
   at Mono.Linker.Steps.MarkStep.MarkInstruction(Instruction instruction)
   at Mono.Linker.Steps.MarkStep.MarkMethodBody(MethodBody body)
   at Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition method)
   at Mono.Linker.Steps.MarkStep.ProcessQueue()
   --- End of inner exception stack trace ---
   at Mono.Linker.Steps.MarkStep.ProcessQueue()
   at Mono.Linker.Steps.MarkStep.ProcessPrimaryQueue()
   at Mono.Linker.Steps.MarkStep.Process()
   at Mono.Linker.Steps.MarkStep.Process(LinkContext context)
   at MonoDroid.Tuner.MonoDroidMarkStep.Process(LinkContext context)
   at Mono.Linker.Pipeline.ProcessStep(LinkContext context, IStep step)
   at Mono.Linker.Pipeline.Process(LinkContext context)
   at MonoDroid.Tuner.Linker.Process(LinkerOptions options, ILogger logger, LinkContext& context)
   at Xamarin.Android.Tasks.LinkAssemblies.Execute(DirectoryAssemblyResolver res)
   at Xamarin.Android.Tasks.LinkAssemblies.RunTask()
   at Microsoft.Android.Build.Tasks.AndroidTask.Execute()

解决建议

  • 调整链接器行为
    发布模式下Xamarin默认启用链接器缩减包体积,可能误删了Plugin.CloudFirestore依赖的Firebase方法:

    1. 打开Android项目属性 → Android选项 → 链接器行为
    2. 先切换为Sdk程序集仅测试,若仍报错可临时选不链接确认问题根源
    3. 若需要保留链接优化,创建Linker.xml文件(设置生成操作为AndroidResource),添加以下内容强制保留相关程序集:
    <linker>
      <assembly fullname="Plugin.CloudFirestore" />
      <assembly fullname="Firebase.Firestore" />
    </linker>
    
  • 检查依赖版本兼容性
    最新版本不一定兼容:

    1. 确认Plugin.CloudFirestore与Xamarin.Firebase.Firestore的版本匹配,部分插件对Firebase版本有特定要求,并非越新越好
    2. 尝试回退Plugin.CloudFirestore到前一个稳定版本,再同步对应版本的Firebase依赖包
  • 手动补充Firebase引用
    检查Android项目是否直接引用了Xamarin.Firebase.Firestore NuGet包,Plugin.CloudFirestore可能未自动引入该依赖,手动添加并确保版本一致

  • 深度清理缓存
    除了Bin/Obj,还需清理NuGet缓存:

    1. 打开Visual Studio → 工具 → NuGet包管理器 → 管理解决方案的NuGet包 → 设置 → 清除所有NuGet缓存
    2. 重启Visual Studio,重新生成解决方案后再尝试发布

内容的提问来源于stack exchange,提问作者Spack09

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:03:19