加载一个NHibernate依赖的dll时出错

时间:2011-08-02 12:07:38

标签: nhibernate nuget castle

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

我试图获得最新最好的w.w.w.,这就是我现在所拥有的:

  • NHibernate.dll(3.2.0.4000)
  • NHibernate.ByteCode.Castle(3.0.0.4000)
  • FluentNHibernate.dll(1.2.0.694)
  • Castle.Core(2.5.2.0)
  • Castle.Services.Logging.NLogIntegration(2.5.2.0)
  • Antlr.Runtim(3.1.3.42154)
  • Iesi.Collections(3.2.0.400)

这些我可以参考并构建我的解决方案。我知道复制/加载dll.s有一些问题,所以我把它们作为部署项目。 但运行时我(仍然)得到以下结果:

  

NHibernate.Bytecode.UnableToLoadProxyFactoryFactoryException:无法在配置代理工厂类时加载类型'NHibernate.ByteCode.Castle.ProxyFactoryFactory,NHibernate.ByteCode.Castle'。   可能的原因是:    - 未部署NHibernate.Bytecode提供程序程序集。    - 用于初始化session-factory部分的'proxyfactory.factory_class'属性的typeName格式不正确。

解决方案:

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

  

NHibernate.ByteCode.LinFu.dll   NHibernate.ByteCode.Castle.dll ---> System.TypeLoadException:程序'NHibernate.ByteCode.Castle.ProxyFactoryFactory'中的方法'IsProxy'来自程序集'NHibernate.ByteCode.Castle,Version = 3.0.0.4000,Culture = neutral,PublicKeyToken = aa95f207798dfdb4'没有实现。

有人想到吗?

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

NUGet套餐,一站式商店,轻松更新!

那里有一个FluentNHibernate包。我安装了它,但我想这里也有一些不妥之处:

测试方法CoreDatabaseTests.CreateCoreDatabase抛出异常:

  

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

在这种情况下从各个位置获取组件是个好主意,您可以从头开始编译所有内容。那是我迄今为止的经历。 Fluent NH尚未更新为NH 3.2GA。

我建议您download fluent NH并坚持使用它附带的版本或者如果您想要处于最前沿,请下载流畅的NH源并使用参考设置为最新的NH(3.2GA)进行编译)。