gpt4 book ai didi

c# - NHibernate、Fluent NHibernate 和 Iesi.Collection 问题。接下来你会尝试什么?

转载 作者:IT王子 更新时间:2023-10-29 04:46:05 29 4
gpt4 key购买 nike

我对 NHibernate 非常陌生,所以如果我在这里遗漏了一些微不足道的东西,我深表歉意。我目前正在阅读 packtpub 的一本名为“NHibernate 3 初学者指南”的书。我主要是按照书中的说明进行操作。当我说大部分时,我已经通过使用 MySQL 而不是 MSSQL 和一直在使用 NuGet 而不是手动下载二进制文件来区分。

我现在在第 2 章,这是第一个真正的编码章节。在本章中,我将构建一个简单的 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):

外部异常消息:无法加载文件或程序集“Iesi.Collections,Version=4.0.0.0,Culture=neutral,PublicKeyToken=aa95f207798dfdb4”或其依赖项之一。找到的程序集的 list 定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)

内部异常消息:无法加载文件或程序集“Iesi.Collections,Version=1.0.1.0,Culture=neutral,PublicKeyToken=aa95f207798dfdb4”或其依赖项之一。找到的程序集的 list 定义与程序集引用不匹配。 (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.

我尝试了以下方法,但现在有点不知所措:

  1. 已尝试通过 NuGet 升级 Iesi.Collections,但未能成功说明没有兼容的 NHibernate 版本。
  2. 下载 NHibernate 和 FluentNhibernate 的二进制文件并手动引用它们。
  3. 从书中提取源示例并复制示例中的 DLL。这给了我一个不同的错误,我还没有研究到足够多的问题来提问。

我有两个问题:

  1. 首先,为什么 NuGet 包会尝试查找版本 4.* dll,而发布的版本指向 1.*?
  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# - NHibernate、Fluent NHibernate 和 Iesi.Collection 问题。接下来你会尝试什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13332429/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com