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

Xamarin发布模式编译报错:Mono.Linker.MarkException求助

解决Xamarin Release构建Mono.Linker报错问题

问题说明

Release模式构建时触发以下报错,Debug模式正常:

Error     Mono.Linker.MarkException: Error processing method: 'System.ComponentModel.ICustomTypeDescriptor System.Data.Entity.ModelConfiguration.Utilities.AttributeProvider::GetTypeDescriptor(System.Type)' in assembly: 'EntityFramework.dll' ---> Mono.Cecil.ResolutionException: Failed to resolve System.Void System.ComponentModel.DataAnnotations.AssociatedMetadataTypeTypeDescriptionProvider::.ctor(System.Type)
   en Mono.Linker.Steps.MarkStep.HandleUnresolvedMethod(MethodReference reference)
   en Mono.Linker.Steps.MarkStep.MarkMethod(MethodReference reference)
   en Mono.Linker.Steps.MarkStep.MarkInstruction(Instruction instruction)
   en Mono.Linker.Steps.MarkStep.MarkMethodBody(MethodBody body)
   en Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition method)
   en Mono.Linker.Steps.MarkStep.ProcessQueue()
   --- Fin del seguimiento de la pila de la excepción interna ---
   en Mono.Linker.Steps.MarkStep.ProcessQueue()
   en Mono.Linker.Steps.MarkStep.ProcessPrimaryQueue()
   en Mono.Linker.Steps.MarkStep.Process()
   en Mono.Linker.Steps.MarkStep.Process(LinkContext context)
   en MonoDroid.Tuner.MonoDroidMarkStep.Process(LinkContext context)
   en Mono.Linker.Pipeline.ProcessStep(LinkContext context, IStep step)
   en Mono.Linker.Pipeline.Process(LinkContext context)
   en MonoDroid.Tuner.Linker.Process(LinkerOptions options, ILogger logger, LinkContext& context)
   en Xamarin.Android.Tasks.LinkAssemblies.Execute(DirectoryAssemblyResolver res)
   en Xamarin.Android.Tasks.LinkAssemblies.RunTask()
   en Microsoft.Android.Build.Tasks.AndroidTask.Execute() en /Users/builder/azdo/_work/1/s/xamarin-android/external/xamarin-android-tools/src/Microsoft.Android.Build.BaseTasks/AndroidTask.cs:línea 17 proyecto.Android                Compilación

解决方法

1. 调整链接器配置

Release模式下链接器会移除未被显式引用的代码,导致EntityFramework的依赖代码被误删。可通过两种方式处理:

  • 临时测试方案:打开Android项目属性,进入Android Options -> Linking,将链接模式改为None,重新构建。若能成功,说明是链接器的问题,再进行精准配置。
  • 精准保留代码:创建linker.xml文件,添加以下内容:
    <linker>
      <assembly fullname="EntityFramework">
        <type fullname="System.Data.Entity.ModelConfiguration.Utilities.AttributeProvider" preserve="all"/>
      </assembly>
      <assembly fullname="System.ComponentModel.DataAnnotations">
        <type fullname="System.ComponentModel.DataAnnotations.AssociatedMetadataTypeTypeDescriptionProvider" preserve="all"/>
      </assembly>
    </linker>
    
    将该文件添加到Android项目中,右键设置其生成操作为Embedded Resource,再重新构建。

2. 更新相关NuGet包

检查并更新EntityFramework和System.ComponentModel.DataAnnotations到兼容Xamarin的最新稳定版本,旧版本可能存在链接器兼容性问题。

3. 检查依赖版本一致性

确保项目中所有相关NuGet包的版本统一,避免版本冲突导致的链接器解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 04:37:40