3

所以我遇到了一个问题,就像我在使用 NuGet 安装 FluentNhibernate 后看到的其他海报一样:

错误

Could not load file or assembly 'NHibernate, Version=3.0.0.2001, 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)

我在 stackOverflow 的答案和其他博客上看到答案是:

Add-BindingRedirect

但是,这并没有解决我的问题,运行该命令的所有结果是:

PM> Add-BindingRedirect

Name                                     OldVersion                                                      NewVersion                                                     
----                                     ----------                                                      ----------                                                     
NHibernate                               0.0.0.0-3.0.0.4000                                              3.0.0.4000  

当我从 NuGet 安装 Fluent Nhibernate 时,它​​说它的依赖项是 Nhibernate 3.0.0.2001 但它安装了 Nhibernate 3.0.0.4000

我究竟做错了什么?

更新

我看到它在节点中添加了以下部分:

 <dependentAssembly>
    <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.0.0.4000" newVersion="3.0.0.4000" />
  </dependentAssembly>

但是,我仍然遇到同样的错误。这看起来不正确。如果 Fluent 想要 3.0.0.2001 并且安装了 NHibernate 3.0.0.4000,那么这个绑定重定向在我看来并不正确。

尽可能具体。我刚刚使用 NuGet 在我的 Web 项目和 C# 库项目中安装 Fluent Nhibernate 以进行测试。然后使用 NUnit 运行测试,它继续给我这个错误。

4

4 回答 4

1

Add-BindingRedirect 是要运行的正确命令,并且您得到的输出是预期的。运行后,您应该会在 web.config(或 app.config)中看到一些绑定重定向条目。你能证实吗?

即使 FluentNH 要求使用旧版本的 NHibernate,这也将允许加载程序集。

如果这对您不起作用,请在您的问题中包含有关您正在做什么的更多详细信息。例如,导致看到您报告的错误的完整步骤顺序是什么(从项目创建开始)。

于 2011-03-28T06:06:53.847 回答
0

我在运行MSpec测试的不同包中遇到了同样的问题。

我的解决方案是手动将app.config文件添加到每个 Web 项目,并使用与文件中相同的绑定重定向Web.config

Add-BindingRedirect命令已将条目Web.config正确添加到文件中,但显然测试运行程序仅评估生成的Bla.Bla.dll.config文件。

于 2012-08-11T06:17:24.647 回答
0

听起来很愚蠢,但检查你的源文件和你的包源并检查那里没有对旧版本的引用 - 如果有删除所有版本并通过包管理器控制台重新下载你想要的版本。

编辑:确保检查所有文件,因为引用和绑定的工作方式可能会变得非常混乱,并且任何文件中的引用都可能导致绑定重定向或仍然获得错误的版本。

于 2014-11-11T17:02:48.247 回答
0

我遇到了同样的问题,我的 web 服务正在运行,但 BindingRedirect 不适用于我的测试。

解决方案是将 Add-BindingRedirect 命令添加的配置从我的 'project'.config 文件复制到计算机的 machine.config 文件中

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" />
        <bindingRedirect newVersion="3.3.1.4000" oldVersion="0.0.0.0-3.3.1.4000"  />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

一旦我复制了我的测试开始工作

于 2016-03-31T19:48:07.887 回答