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

Xamarin.Forms版本高于4.7时出现Mono.Linker.MarkException错误求助

解决Xamarin.Forms 4.7以上版本的Mono.Linker.MarkException错误

错误详情

Severity    Code    Description Project File    Line    Suppression State
Error       Mono.Linker.MarkException: Error processing method: 'System.Void xxx.Droid.Resource::UpdateIdValues()' in assembly: 'xxx.Droid.dll' ---> Mono.Cecil.ResolutionException: Failed to resolve System.Int32 Xamarin.Forms.Platform.Android.Resource/String::overflow_tab_title
   at Mono.Linker.Steps.MarkStep.HandleUnresolvedField(FieldReference 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() in /Users/runner/work/1/s/xamarin-android/external/xamarin-android-tools/src/Microsoft.Android.Build.BaseTasks/AndroidTask.cs:line 17 xxx.Droid       

已尝试方案:

  • 移除Xamarin.Android.Support.v7.MediaRouter
  • 清理项目→关闭VS→删除bin/obj文件夹→重启VS→重新生成

解决思路

1. 调整链接器行为

该错误是链接器优化时找不到目标资源字段,可通过修改链接器规则解决:

  • 右键Android项目→属性→Android选项→链接器行为,先选择**"不链接"测试是否解决问题,确认后可尝试"SDK程序集仅"**平衡包体积
  • 若需保留完整链接优化,在项目中添加Linker.xml文件,写入以下规则:
    <linker>
      <assembly fullname="Xamarin.Forms.Platform.Android">
        <type fullname="Xamarin.Forms.Platform.Android.Resource" preserve="all"/>
        <type fullname="Xamarin.Forms.Platform.Android.Resource.String" preserve="all"/>
      </assembly>
    </linker>
    

2. 统一Xamarin.Forms及依赖版本

Xamarin.Forms 4.8+全面转向AndroidX,旧Support库会引发版本冲突:

  • 打开NuGet包管理器,将所有Xamarin.Forms相关包(含Xamarin.Forms.Platform.Android)更新至同一最新版本
  • 检查并更新所有Xamarin.AndroidX系列包,确保版本完全一致

3. 修复资源生成异常

自动生成的Resource类可能出现异常,可手动干预:

  • 右键Android项目→生成→重新生成资源文件(或执行命令MSBuild /t:GenerateResources)
  • 检查Resources/values/strings.xml,若缺少overflow_tab_title,手动添加:
    <string name="overflow_tab_title">更多</string>
    

4. 排查引用与命名空间冲突

  • 清理Android项目中残留的旧版Xamarin.Forms或Support库引用
  • 检查是否存在自定义Resource类或命名空间,避免与Xamarin.Forms.Platform.Android.Resource冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:03:39