1

这个电话

// this._cfg 是一个 NHibernate 配置实例
this._sessionFactory = this._cfg.BuildSessionFactory();

在运行时给我这个异常(不是在编译时)。

无法加载文件或程序集“NHibernate.ByteCode.Castle”或其依赖项之一。系统找不到指定的文件。":"NHibernate.ByteCode.Castle

到目前为止还可以。但问题是,这段代码在类库项目中运行,我在该项目引用了 NHibernate.ByteCode.Castle(以及所有其他 NHibernate dll)。

Wierder:我可以通过在调用我的类库的 Windows WPF 可执行项目中额外引用 NHibernate dll 来修复异常。但是 Windows WPF 可执行文件不包含直接使用 NHibernate 的代码(证明:它编译良好,没有任何 NHibernate 引用)。发生什么了?显然,在实际使用 NHibernate 的项目中引用 NHibernate.ByteCode.Castle 是不够的。有谁知道为什么?

4

2 回答 2

5

我知道这很旧,但我为解决依赖问题所做的工作很简单:

在我的 UnitOfWork 中,我添加了一种静态方法:

private static void bringCastleDamnit()
{
   var pf = new NHibernate.ByteCode.Castle.ProxyFactoryFactory();
}

然后,只有在那时,MSBuild 才会看到它是需要的,并将其复制到我的输出目录中,以用于引用我的 Data 项目的(asp.net 和控制台)应用程序。

于 2011-01-04T18:44:39.887 回答
1

我根本不会引用城堡字节码工厂。只需确保使用构建后步骤将其(以及所有其他需要的依赖项)复制到输出目录即可。

于 2010-08-26T10:24:17.050 回答