需要帮助NHibernate汇编版本问题。加载正确的程序集版本时出错

时间:2011-03-27 23:04:36

标签: c# nhibernate fluent-nhibernate

注意我关闭了本地化的其他故障单。

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

我做错了什么?

2 个答案:

答案 0 :(得分:5)

我无法评论NuGet的具体问题,但您应该能够通过将程序集绑定重定向添加到app.config或web.config来解决错误。

您可能需要检查公钥是否正确。

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Nhibernate" publicKeyToken="aa95f207798dfdb4"/>
        <bindingRedirect oldVersion="3.0.0.2001" newVersion="3.0.0.4000"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

那应该将2001年的所有请求重定向到4000

答案 1 :(得分:4)

我不知道你有多少网络项目,哪个是你的开始项目设置,是基本的,但我的测试方法遇到了同样的问题,我发现我的测试项目的app.config没有'有绑定重定向。

在我的例子中,Add-BindingRedirect命令生成类似这样的内容

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

这解决了我的问题,我希望这会有所帮助。