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

Xamarin Android归档失败:Xamarin.iOS.dll引发LinkAssemblies任务错误

解决Xamarin.iOS打包Google Play时LinkAssemblies任务失败的问题

嘿,我之前在Xamarin.iOS项目打包上传Google Play的时候,也碰到过一模一样的LinkAssemblies报错,折腾了好一阵才解决。针对你遇到的这个Mono.Linker.MarkException——处理Xamarin.iOS.dll里的System.Void ObjCRuntime.Runtime::set_UseAutoreleasePoolInThreadPool(System.Boolean)方法出错的问题,给你几个亲测有效的排查和解决步骤:

  • 先检查Xamarin.iOS版本兼容性
    这个UseAutoreleasePoolInThreadPool是Xamarin.iOS较新版本引入的API,如果你的本地SDK版本和项目引用的版本不匹配,很容易触发链接器的标记错误。建议:

    • 打开Visual Studio的Tools > Options > Xamarin > iOS Settings查看本地SDK版本;
    • 右键项目进入Properties > iOS Application,确认项目的目标SDK版本和本地SDK一致,要么升级到最新稳定版,要么回退到之前成功打包的版本(如果不想大动的话)。
  • 调整链接器行为,避免误删关键方法
    链接器在做代码优化时,可能误判这个方法没有被引用而把它移除,导致打包报错:

    1. 先临时调整链接器选项:右键项目 > Properties > iOS Build,把Linker behavior改成Don't link,尝试打包,如果能成功,说明是链接器的问题;
    2. 如果需要保留链接优化,就在项目里新增一个Linker.xml文件,内容如下:
      <linker>
          <assembly fullname="Xamarin.iOS">
              <type fullname="ObjCRuntime.Runtime">
                  <method name="set_UseAutoreleasePoolInThreadPool" />
              </type>
          </assembly>
      </linker>
      
    3. 记得把这个Linker.xml的Build Action设置为LinkDescription(右键文件 > 属性里调整)。
  • 彻底清理项目缓存后重建
    有时候旧的缓存文件会导致各种奇怪的打包错误,建议:

    • 删除项目目录下的bin和obj文件夹;
    • 清除Xamarin的全局缓存:macOS路径是~/Library/Caches/Xamarin,Windows是%LOCALAPPDATA%\Xamarin\Cache;
    • 重新打开项目,先清理解决方案,再尝试归档打包。
  • 检查并统一NuGet包版本
    项目里的NuGet包如果和Xamarin.iOS版本不兼容,也可能触发链接器问题:

    • 打开NuGet Package Manager,查看所有包的版本,尤其是涉及iOS原生绑定的包;
    • 用Consolidate功能统一相同包的版本,要么更新到最新兼容版,要么回退到之前成功打包时的版本。
  • 确认项目符合Google Play的归档要求
    Google Play的最新要求(比如目标SDK版本、最低iOS版本)也可能间接导致打包问题,确认你的项目:

    • Target Framework和Minimum iOS Version符合Google Play的当前要求;
    • 所有权限、架构设置都和之前成功上传的版本一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:23:50