私はNHibernateに非常に慣れていないので、ここで些細なことを見落としていたら申し訳ありません。私は現在、packtpub の「NHibernate 3 初心者向けガイド」というタイトルの本に取り組んでいます。私はほとんど本の指示に従っています。ほとんどの場合、MSSQL の代わりに MySQL を使用して分岐し、手動でバイナリをダウンロードするのではなく NuGet を使用しています。
私は現在、最初の実際のコーディングの章である第 2 章にいます。この章では、ボタンをクリックするだけでデータベース スキーマを構築する単純な WPF アプリケーションを構築します。この章で指定されたProduct
およびクラス用に、すでにいくつかの POCO を作成しました。Category
NuGet を通じて、次の参照を追加しました。
- MySQL.Data
- NHibernate (依存関係が自動的に解決されるため、Iesi.Collections)
- 流暢な NHibernate
ボタンをクリックしてデータベースを構築すると、次のコード ブロックが実行されます。
private const string connString = "string omitted for brevity";
private void btnCreateDatabase_Click(object sender, RoutedEventArgs e)
{
Fluently.Configure().Database(MySQLConfiguration.Standard.ConnectionString(connString))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<ProductMap>())
.ExposeConfiguration(CreateSchema)
.BuildConfiguration();
}
ボタンをクリックすると、次の例外が発生します ( FileLoadException
):
外部例外メッセージ:Could not load file or assembly 'Iesi.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
内部例外メッセージ:Could not load file or assembly 'Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
それが役立つ場合は、「Fusion Log」を次に示します。
=== Pre-bind state information ===
LOG: User = Borealis\Frito
LOG: DisplayName = Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4
(Fully-specified)
LOG: Appbase = file:///C:/Users/Frito/documents/visual studio 2010/Projects/NH3BeginnersGuide/Chapter2/App/Sample.UI/bin/Debug/
LOG: Initial PrivatePath = NULL
Calling assembly : NHibernate, Version=3.3.1.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Users\Frito\documents\visual studio 2010\Projects\NH3BeginnersGuide\Chapter2\App\Sample.UI\bin\Debug\Sample.UI.vshost.exe.config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Redirect found in application configuration file: 1.0.1.0 redirected to 4.0.0.0.
LOG: Post-policy reference: Iesi.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4
LOG: Attempting download of new URL file:///C:/Users/Frito/documents/visual studio 2010/Projects/NH3BeginnersGuide/Chapter2/App/Sample.UI/bin/Debug/Iesi.Collections.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Major Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
私は次のことを試しましたが、今は少し途方に暮れています:
- NuGet を使用して Iesi.Collections をアップグレードしようとしましたが、互換性のある NHibernate のバージョンがないと言って失敗しました。
- NHibernate と FluentNhibernate のバイナリをダウンロードし、手動で参照しました。
- 本からソース サンプルを取り出し、サンプル内の DLL をコピーします。これにより、まだ質問するのに十分なほど調査していない別のエラーが発生しました。
2 つの質問があります。
- まず、出荷されたバージョンが 1.* を指しているのに、NuGet パッケージがバージョン 4.* dll を検索しようとするのはなぜですか?
- すべてのソースを取得してローカルでビルドする以外に、他にどのようなことを試みる必要がありますか? 私は少し途方に暮れており、他の情報が欲しいです。
前もって感謝します!