我在这篇文章中读到,使用此post中的接口删除了所有ProxyFactory依赖项。 因此,您需要指定在hibernate.cfg.xml文件中使用哪个实现。 我有这个配置:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">Data Source=.\SQLEXPRESS;Initial Catalog=MYDB;Integrated Security=true</property>
<property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
<property name='proxyfactory.factory_class'>NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
</session-factory>
</hibernate-configuration>
我添加了对NHibernate.ByteCode.Castle.dll
的引用。当我使用MBunit运行测试时,我得到的错误是我的部署文件夹应该包含NHibernate.ByteCode.Castle.dll
或NHibernate.ByteCode.LinFu.dll
。我想这是正确的配置,它应该工作。但它没有用。我花了很多时间在这背后。
P.S:当我下载NHibernate时,NHibernate.ByteCode.Castle项目没有建成。我将项目添加到解决方案并构建它。然后我引用了程序集。
答案 0 :(得分:2)
不久前我也有同样的情况。
当您说您添加了引用时,是实际项目还是测试项目?它应该在两者之内。此外,确保在引用的属性(F4)中将“复制本地”设置为true。
我用来检查dll是否在运行应用程序的目录中的另一种方法是在任何配置之前调用以下内容。
Console.WriteLine(Directory.GetCurrentDirectory());
在我的情况下,我了解到当使用ReSharper执行测试时,它运行的位置与我预期的不同,并且不包含dll。做一个干净的解决方案和重建似乎纠正了这个问题。
希望这能为您提供一些检查方法。