1

この呼び出し

// this._cfg は NHibernate 構成インスタンス
です this._sessionFactory = this._cfg.BuildSessionFactory();

実行時にこの例外が発生します(コンパイル時ではありません)。

ファイルまたはアセンブリ 'NHibernate.ByteCode.Castle' またはその依存関係の 1 つを読み込めませんでした。指定されたファイルが見つかりません。":"NHibernate.ByteCode.Castle

ここまではOK。しかし問題は、このコードはクラス ライブラリ プロジェクトで実行されており、そのプロジェクトで (他のすべての NHibernate dll と共に) NHibernate.ByteCode.Castleを参照したことです。

Wierder: クラス ライブラリを呼び出す Windows WPF 実行可能プロジェクトで NHibernate dll を追加参照することで、例外を修正できます。しかし、Windows WPF 実行可能ファイルには、NHibernate を直接使用するコードは含まれていません (NHibernate への参照がなくても正常にコンパイルされることが証明されています)。どうしたの?どうやら実際に NHibernate のものを使用しているプロジェクトで NHibernate.ByteCode.Castle を参照するだけでは不十分です。理由を知っている人はいますか?

4

2 に答える 2

5

これが古いことはわかっていますが、依存関係の問題を修正するために行ったことは簡単です。

UnitOfWork に、静的メソッドを 1 つ追加しました。

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

その後、MSBuild はそれが必要であることを認識し、データ プロジェクトを参照する (asp.net およびコンソール) アプリの出力ディレクトリにコピーします。

于 2011-01-04T18:44:39.887 に答える
1

キャッスルバイトコードファクトリはまったく参照しません。ビルド後の手順を使用して、それ(およびその他の必要な依存関係)が出力ディレクトリにコピーされていることを確認してください。

于 2010-08-26T10:24:17.050 に答える