Issuewith NHibernate的,流利的NHibernate和Iesi.Collecti

2019-08-02 14:34发布

我非常新的NHibernate的,所以我很抱歉,如果我失去了一些东西小事在这里。 我目前通过从packtpub题为“NHibernate的3初学者指南”一书的工作。 我主要是按照书中的方向。 当我说主要是我已经使用MySQL,而不是MSSQL分叉并一直在使用的NuGet而不是手工下载的二进制文件。

我在第2章的这是第一个真正的编码章的那一刻。 在这一章中,我构建一个简单的WPF应用程序通过点击一个按钮来建立我的数据库架构。 我已经建立了一些POCO的对ProductCategory的一章中指定的类。 通过的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=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) 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.

我曾尝试以下和现在在一个有点损失:

  1. 通过尝试的NuGet提升Iesi.Collections但失败说没有NHibernate的版本是兼容的。
  2. 对于下载NHibernate和FluentNhibernate二进制文件和手动引用它们。
  3. 在拉样品中的DLL从书和复制源样本。 这给了我,我还没有研究远远不够,提问又一个不同的错误。

我有两个问题:

  1. 首先,包装的NuGet为什么会试图寻找一个版本4 * DLL时的版本的船点回到1 *?
  2. 我应该尝试其他什么事情让工作短让所有的源和建设本地的? 我在一个小的损失,并会喜欢一些其他输入。

提前致谢!

Answer 1:

圣poopers这驱使我坚果。 我发现一个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元件,重建和运行允许上面的按钮才能正常工作。 我不知道我做了什么导致这种情况产生的得到,但我很高兴我找到了。 感谢所有为你的努力来帮助和感谢的问题给予好评!



Answer 2:

Iesi.Collections 4.0是一个重大的修改版本,针对.NET 4.0,对于未来的NHibernate 4.0使用。

不幸的NuGet包NHibernate的版本直至并包括3.3.1不指定上限为Iesi填入依赖。 与NHibernate 3.3.2这种改变,明确禁止Iesi填入第4版或更高版本。 所以,如果你通过的NuGet更新到3.3.2 NH,我希望它解决Iesi填入依赖到3.x版。



文章来源: Issuewith NHibernate, Fluent NHibernate and Iesi.Collection. What would you try next?