0

我在这篇文章中读到,所有 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.dllor的错误NHibernate.ByteCode.LinFu.dll。我想这是正确的配置,它应该可以工作。但它不起作用。我在这背后花了很多时间。

PS:当我下载 NHibernate 时,NHibernate.ByteCode.Castle 项目没有建立。我将项目添加到解决方案中并构建它。然后我引用了程序集。

4

1 回答 1

2

不久前我也遇到过同样的情况。

当您说您添加了参考时,是针对实际项目还是测试项目?它应该在两者之内。此外,请确保在参考的属性(F4)中将“复制本地”设置为 true。

我用来检查 dll 是否在运行应用程序的目录中的另一种方法是在任何配置之前调用以下命令。

Console.WriteLine(Directory.GetCurrentDirectory());

在我的情况下,我了解到当使用 ReSharper 执行测试时,它运行在与我预期不同的位置并且不包含 dll。做一个干净的解决方案并重建似乎可以解决这个问题。

希望这能给你一些检查的东西。

于 2009-07-21T05:48:20.670 回答