問題

私はNHibernateにとって非常に新しいので、ここで何か些細なことがない場合はお詫びします。私は現在、packtpubから "NHibernate 3 ninners Guide"というタイトルの本を読んでいます。私は主に本の方向に従っています。私が主にMSSQLの代わりにMySQLを使用して分岐し、手作業でバイナリをダウンロードするのではなく

私は現時点で最初の実際のコーディングの章です。この章では、ボタンをクリックしてデータベーススキーマを構築する簡単なWPFアプリケーションを構築しています。私はすでに章で指定されたProductCategoryクラスのPOCOをいくつか構築しました。 NuGetを通じて、私は以下の参照を追加しました:

  1. MySql.Data
  2. NHibernate(依存関係として自動的に解決され、Iesi.Collections)
  3. 流暢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\documentsisual studio 2010\Projects\NH3BeginnersGuide\Chapter2\App\Sample.UIin\Debug\Sample.UI.vshost.exe.config
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework4.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.
 

私は以下を試して、今は少し損失があります:

  1. NuGetを使ってIesi.Collectionsをアップグレードしようとしましたが、互換性のあるNHibernateのバージョンがないと言って失敗します。
  2. NHibernateとFluentNhibernateのバイナリをダウンロードし、手動で参照します。
  3. 本からソースサンプルを引き出し、サンプル内のDLLをコピーします。これは私がまだ質問をするのに十分に研究していないという別のエラーを私に与えました。

私は2つの質問があります:

  1. まず、NuGetパッケージがバージョン4. * dllを探そうとするのはなぜですか?
  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要素をコメントアウトし、再構築して実行すると、上記のボタンが正しく機能するようになりました。私はこれを生成するために何をしたのか分かりませんが、私はそれを見つけてうれしいです。あなたの助けと質問のアップボットに感謝します!

  同じタグがついた質問を見る

c#nhibernatefluent-nhibernate