1

テストにはmspecを使用し、テストではデータベースにSQLitex86を使用するNHiernateセットアップを使用しています。問題は、mspec r#ランナーを使用してテストを実行すると、すべてが正常に機能しますが、コンソールから実行すると、sqlitedllが見つからないというエラーが発生することです。

仕様プロジェクトの私の構成:

.net 4

x86(sqliteのx86バージョンを使用)

System.Data.SQLite、Version = 1.0.64.0、Culture = neutral、PublicKeyToken = db937bc2d44ff139 mspec、Version = 0.3.0.0、Culture = neutral、PublicKeyToken = null、ターゲットランタイム:v4.0.30319、ターゲット:x86

MSpecはソースから構築されます。リフレクターでは、mspec.exeはx86用にビルドされたものとして表示されます。これは私のセットアップに適しているようで、前述のように、テストはr#ランナーを使用して正常に実行されています。

NHibernate.HibernateException:NHibernate.Driver.SQLite20Driver、NHibernate、Version = 2.1.2.4000、Culture = neutral、PublicKeyToken=aa95f207798dfdb4からドライバーを作成できませんでした。---> System.Reflection.TargetInvocationException:呼び出しのターゲットによって例外がスローされました。---> NHibernate.HibernateException:アセンブリSystem.Data.SQLiteのIDbCommandおよびIDbConnection実装が見つかりませんでした。アセンブリSystem.Data.SQLiteがアプリケーションディレクトリまたはグローバルアセンブリキャッシュにあることを確認します。アセンブリがGACにある場合は、アプリケーション構成ファイルの要素を使用して、アセンブリのフルネームを指定します。NHibernate.Driver.ReflectionBasedDriver..ctor(String driverAssemblyName、String connectionTypeName、String commandTypeName)at NHibernate.Driver.SQLite20Driver..ctor()

誰かがそれを修正する方法を考えていますか?

よろしくお願いします。曇りのウィーンからのご挨拶、

クリス

4

1 に答える 1

7

fuslogvw.exeを使用して、アキュタリーエラーを見つけました(ヒントに感謝します;):「このプロセスで別のランタイムにロードされる可能性があるため、v2.0.50727に対してビルドされたIJWモジュールを拒否します。」

次のようなmspec.exe.configを追加します。

<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true" ></startup>
</configuration>

問題を解決しました。テストの実行は期待どおりになりました。

ありがとう&挨拶、

クリス

于 2010-09-27T08:05:11.300 に答える