此次电话
// 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是不够的。谁知道为什么?
答案 0 :(得分:5)
我知道这已经过时了,但我为修复依赖问题所做的工作很简单:
在我的UnitOfWork中,我添加了一个静态方法:
private static void bringCastleDamnit()
{
var pf = new NHibernate.ByteCode.Castle.ProxyFactoryFactory();
}
然后,只有这样,MSBuild才会看到它是必需的,并将其复制到我的输出目录中,用于引用我的Data项目的我的(asp.net和控制台)应用程序。
答案 1 :(得分:1)
我根本不会引用城堡字节码工厂;只需确保它(以及所有其他所需的依赖项)使用构建后步骤复制到输出目录。