例外を発生させるコードは次のとおりです
public Configuration GetConfiguration()
{
var persister = SQLiteConfiguration
.Standard
.UsingFile("Test.db")
.ShowSql();
var configuration = Fluently
.Configure()
.Database(persister)
.Mappings(map => map.FluentMappings.AddFromAssemblyOf<WordMap>())
.BuildConfiguration();
new SchemaExport(configuration).Execute(true, true, false);
return configuration;
}
完全な例外テキスト:
失敗: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実装が見つかりませんでした。 AssemblySystem.Data.SQLiteがアプリケーションディレクトリまたはグローバルアセンブリキャッシュにあることを確認します。アセンブリがGACにある場合は、アプリケーション構成ファイルの要素を使用して、アセンブリのフルネームを指定します。
NHibernateのバージョンは2.1.2.4000です
System.Data.SQLiteのバージョンは1.0.66.0です
ターゲットフレームワークは3.5(x86)です
System.Data.SQLiteのローカルコピーがオンになっています。
何が問題なのですか?
App.configにuseLegacyV2RuntimeActivationPolicy = "true"を追加することで、この問題を取り除きました。 NHibernateSQLiteアプリケーションの.Net4.0へのアップグレードの問題 を参照してください。
System.Data.SQLite.dllライブラリをアプリケーションのベースディレクトリ(特にNHibernate.dllライブラリが配置されている場所)にコピーするだけです。 VSで参照として追加する必要もありません。
よろしく
Bronek
SQLite NuGetパッケージをインストールしたところ、うまくいきました。
NHibernate.Driver.SQLite20Driver、NHibernate、Version = 2.1.2.4000、Culture = neutral、PublicKeyToken = aa95f207798dfdb4からドライバーを作成できませんでした
解決:
testsettings:ホストを選択します64ビットマシンで64ビットプロセスでテストを実行します
私が助けることができることを願っています。
陽気なコーディング
LocalCopyがオンの場合、スタートアッププロジェクトのSystem.Data.SQLiteのバージョンでオンになっていますか。これは、サブプロジェクトのbinディレクトリではなく、それが検索される場所だからです。