Add-BindingRedirect无法解决NuGet与问题

时间:2011-03-27 12:27:26

标签: c# nhibernate fluent-nhibernate nuget

所以我遇到了一个问题,就像我看到其他海报在使用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 个答案:

答案 0 :(得分:1)

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

即使FluentNH要求使用旧版本的NHibernate,也可以加载程序集。

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

我遇到了同样的问题,我的网络服务正在运行,但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>

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