NHibernate - 缺少dll

Pha*_*mer 1 nhibernate castle

这个电话

// 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是不够的.谁知道为什么?

hom*_*ast 5

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

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

private static void bringCastleDamnit()
{
   var pf = new NHibernate.ByteCode.Castle.ProxyFactoryFactory();
}
Run Code Online (Sandbox Code Playgroud)

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