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

NHibernate.dll 5.5.2加载异常及绑定重定向疑问求助

问题原因分析与解决方案

先拆解你遇到的三个场景核心原因:

场景a:无绑定重定向时的错误

NHibernate.Caches.RtMemoryCache 5.9.0在编译阶段依赖的是NHibernate 5.2.0.0版本的程序集(从错误日志的Calling assembly : NHibernate.Caches.RtMemoryCache...可直接确认)。项目运行时,这个缓存组件会尝试加载它编译时依赖的NHibernate版本,但你的bin目录里只有5.5.2版本,版本号不匹配,触发程序集加载失败。

场景b:重定向到5.5.2仍报错

你配置了将所有旧版本重定向到5.5.2,但错误日志显示Persistent.Interfaces请求的是NHibernate 5.5.0.0,且重定向后仍加载失败。这里的关键问题是:你项目bin目录中的NHibernate.dll实际版本并不是5.5.2,而是5.5.0.0。

很多NuGet包存在「NuGet版本号」和「程序集文件版本号」不一致的情况——你安装的是NuGet包5.5.2,但包里的NHibernate.dll的程序集版本是5.5.0.0。当你配置重定向到5.5.2时,CLR尝试寻找版本为5.5.2的程序集,但实际文件是5.5.0,自然匹配失败。

场景c:重定向到5.5.0能正常运行

这个配置生效的原因是,它将所有请求版本重定向到了你bin目录中实际存在的NHibernate.dll版本(5.5.0.0),CLR能找到匹配的程序集,因此加载成功。


无需绑定重定向的解决方案

要彻底移除绑定重定向,需确保所有依赖组件请求的NHibernate版本和项目中实际存在的版本完全一致,具体步骤如下:

  1. 确认NHibernate.dll的真实版本
    右键项目bin目录中的NHibernate.dll → 属性 → 详细信息,查看「文件版本」和「产品版本」;或用ILDasm打开该dll,查看Manifest里assembly节点的版本号。

  2. 对齐所有依赖项的NHibernate版本

    • 检查Persistent.Interfaces项目:确认它引用的NHibernate NuGet包版本是否和主项目一致?如果它引用的是旧版本(比如5.5.0),升级到和主项目相同的NuGet包,确保它编译时依赖的程序集版本和bin目录里的一致。
    • 检查NHibernate.Caches.RtMemoryCache:寻找和你实际使用的NHibernate程序集版本匹配的缓存包版本。如果你的NHibernate程序集版本是5.5.0,就安装对应兼容5.5.0的RtMemoryCache版本,而非依赖5.2.0的5.9.0版本。
  3. 清理项目并重建

    • 删除项目的bin、obj目录
    • 清理NuGet缓存(执行命令 nuget locals all -clear)
    • 重新还原NuGet包并重建整个解决方案,确保所有输出的程序集版本完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 04:48:10