私はNHibernateに非常に慣れていないので、ここで些細なことを見逃してしまったことをお詫びします。私は現在、packtpubの「NHibernate3BeginnersGuide」というタイトルの本を執筆しています。私は主に本の指示に従っています。ほとんどの場合、MSSQLの代わりにMySQLを使用して分岐し、バイナリを手動でダウンロードするのではなくNuGetを使用しています。
私は現在、最初の実際のコーディングの章である第2章にいます。この章では、ボタンをクリックするだけでデータベーススキーマを構築するための単純なWPFアプリケーションを構築しています。この章で指定されているProduct
クラスとCategory
クラス用にいくつかのPOCOをすでに作成しました。 NuGetを通じて、次の参照を追加しました。
ボタンをクリックしてデータベースを構築すると、次のコードブロックが実行されます。
_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)
それが役立つ場合は、「フュージョンログ」を次に示します。
_=== 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.
_
私は以下を試しましたが、今は少し途方に暮れています:
2つの質問があります:
前もって感謝します!
聖なるプーパーはこれが私を狂わせた。 app.config
は、おそらく私が何かをいじっていたときに、ある時点で作成されました。の中に app.config
私は次を見つけました:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Iesi.Collections" publicKeyToken="aa95f207798dfdb4" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Runtime
要素をコメントアウトし、再構築して実行すると、上のボタンが正しく機能するようになりました。これを生成するために何をしたのかわかりませんが、見つけてよかったです。支援に尽力してくれてありがとう、そして質問への賛成に感謝します!
Iesi.Collections 4.0は、将来のNHibernate 4.0で使用するために、.Net4.0を対象とした大幅に変更されたバージョンです。
残念ながら、3.3.1までのNHibernateバージョンのNugetパッケージは、Iesi依存関係の上限を指定していません。 NHibernate 3.3.2では、これが変更され、Iesiバージョン4以降を明示的に禁止しました。したがって、NuGetを介してNH 3.3.2に更新すると、Iesiの依存関係が3.xバージョンに解決されると思います。