加载NHibernate相关dll之一时出错';s

加载NHibernate相关dll之一时出错';s,nhibernate,nuget,castle,Nhibernate,Nuget,Castle,我正在使用NHibernate构建一个应用程序。因为我无法添加当前版本的NHibernate的DLL(当framework 4.0是目标时,我无法添加引用) 我试图获得最新和最伟大的w.w.w.,这就是我现在拥有的: NHibernate.dll(3.2.0.4000) NHibernate.ByteCode.Castle(3.0.0.4000) FluentNHibernate.dll(1.2.0.694) 城堡核心(2.5.2.0) Castle.Services.Logging.nlog

我正在使用NHibernate构建一个应用程序。因为我无法添加当前版本的NHibernate的DLL(当framework 4.0是目标时,我无法添加引用)

我试图获得最新和最伟大的w.w.w.,这就是我现在拥有的:

  • NHibernate.dll(3.2.0.4000)
  • NHibernate.ByteCode.Castle(3.0.0.4000)
  • FluentNHibernate.dll(1.2.0.694)
  • 城堡核心(2.5.2.0)
  • Castle.Services.Logging.nlogingintegration(2.5.2.0)
  • Antlr.Runtim(3.1.3.42154)
  • Iesi.集合(3.2.0.400)
我可以参考这些,并用它们构建解决方案。我知道在复制/加载dll.s时存在一些问题,所以我将它们设置为部署项。 但运行时我(仍然)得到以下结果:

NHibernate.Bytecode.UnableToLoadProxyFactoryFactoryException:在配置代理工厂类期间,无法加载类型“NHibernate.Bytecode.Castle.ProxyFactoryFactory,NHibernate.Bytecode.Castle”。 可能的原因有: -未部署NHibernate.字节码提供程序程序集。 -用于初始化会话工厂部分的“proxyfactory.factory\u类”属性的typeName格式不正确

解决方案:

确认部署文件夹包含以下程序集之一:

NHibernate.ByteCode.LinFu.dll NHibernate.ByteCode.Castle.dll-->System.TypeLoadException:程序集“NHibernate.ByteCode.Castle.ProxyFactory”中类型“NHibernate.ByteCode.Castle”中的方法“IsProxy”,版本=3.0.0.4000,区域性=中性,PublicKeyToken=aa95f207798dfdb4”没有实现

有人吗

作为对Vijay Gill回答的回应,我决定采取不同的策略

NUGet软件包,一站式商店,轻松更新

外面有一个FluentNHibernate软件包。我已经安装了它,但我猜这里也有问题:

测试方法CoreDatabaseTests.CreateCoreDatabase引发异常:

System.IO.FileLoadException:无法加载文件或程序集“NHibernate,版本=3.2.0.4000,区域性=中性,PublicKeyToken=aa95f207798dfdb4”或其依赖项之一。定位的程序集清单定义与程序集引用不匹配。(来自HRESULT:0x8013100的异常)--->System.IO.FileLoadException:无法加载文件或程序集“NHibernate,Version=3.1.0.4000,Culture=neutral,PublicKeyToken=aa95f207798dfdb4”或其依赖项之一。定位的程序集清单定义与程序集引用不匹配


在这种情况下,从不同的位置获取组件是一个好主意,您可以从头编译所有内容。这就是我目前的经验。Fluent NH尚未更新为NH 3.2GA


我建议您继续使用随附的版本,或者如果您希望处于最前沿,请下载fluent NH的源代码,并使用设置为最新NH(3.2GA)的引用进行编译

使用NHibernate 3.2,您不再需要NHibernate.ByteCode.Castle,这大大简化了您的依赖关系树。

对NuGet有何想法packages@KSig:如果Fluent.NHibernate当前不支持NHibernate 3.2,并且您需要它,请帮助他们这样做。不要只是站在那里等它发生,要让它发生。从他们的邮件列表开始:你是对的,如果不是那些致力于这些项目的个人,我们根本不会有(流利的)NHibernate。为了让我直截了当,我把你的答案投了赞成票;-)@Mauricio—请注意,新的字节码提供程序与使用Castle的代码存在严重的、未记录的不兼容性(请参阅)。就在今天,我不得不将setter添加到所有只读属性中,这些属性是其他对象的外观。这已经级联成一组全新的异常。认真考虑恢复到FNH 1 /NH2.1.2,这很好。@ TimbBur地狱考虑提交一个补丁来实现缺失或修复错误。令人惊讶的是,我确信您可以添加对在.NET 4项目中为旧版本.NET编译的程序集的引用。作为证明,我有一些项目是为4.0编译的,但有对为1.1编译的程序集的引用(因为我们没有这些程序集的源代码)。我从头开始重新组装了完整的解决方案和其中的所有项目。然后将引用添加到您提到的下载。它现在似乎在起作用。谢谢我已把你的回答记为正确的。干杯!很高兴能帮上忙:)我也看到了。我从配置中删除了“proxyfactory.factory_类”,它正常工作了