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

求助:使用Mailkit.dll遇System.Memory版本不匹配加载失败问题

问题原因

你遇到的是.NET程序集版本绑定冲突:MailKit依赖的MimeKit编译时引用的是System.Memory 4.0.1.2,但你的应用目录中存在的是更高版本的System.Memory 4.6.28619.01,而.NET Framework的程序集加载机制默认要求严格匹配版本号,导致找不到符合要求的程序集,抛出该错误。

解决方法

1. 添加程序集绑定重定向(推荐)

在应用的app.config(桌面应用)或web.config(Web应用)中添加以下配置,强制CLR将旧版本的System.Memory请求重定向到你当前使用的版本:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
        <!-- 将所有旧版本重定向到你当前的4.6.28619.01版本 -->
        <bindingRedirect oldVersion="0.0.0.0-4.6.28619.01" newVersion="4.6.28619.01" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

2. 重新安装NuGet依赖(避免手动dll版本不一致)

如果是手动复制的MailKit、MimeKit和System.Memory.dll,建议通过NuGet重新安装:

  • 卸载已有的MailKit和MimeKit NuGet包
  • 重新安装MailKit 3.4.1(NuGet会自动拉取适配.NET Framework 4.7的MimeKit及对应依赖版本,包括正确的System.Memory)

3. 清理GAC中的冲突版本

如果全局程序集缓存(GAC)中存在旧版本的System.Memory,可能会被优先加载:

  1. 以管理员身份打开命令提示符
  2. 执行命令查看已安装的版本:
    gacutil /l System.Memory
    
  3. 如果存在Version=4.0.1.2的版本,执行以下命令移除:
    gacutil /u System.Memory,Version=4.0.1.2,PublicKeyToken=cc7b13ffcd2ddd51
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:55:31