c#dll绑定到不同的版本

时间:2010-04-20 02:58:55

标签: .net visual-studio-2008 nhibernate assemblies

我刚刚重启了一个项目,我正在使用NHibernate。上次使用它时,该项目工作正常,但现在出现以下错误。

  

System.IO.FileLoadException:无法加载文件或程序集   'Iesi.Collections,Version = 1.0.0.3,Culture = neutral,   PublicKeyToken = aa95f207798dfdb4'或其依赖项之一。该   找到程序集的清单定义与程序集不匹配   参考。 (来自HRESULT的异常:0x80131040)at   NHibernate.Cfg.Configuration.Reset()at   NHibernate.Cfg.Configuration..ctor(SettingsFactory settingsFactory)at   NHibernate.Cfg.Configuration..ctor()at   Luther.Dao.Repositories.Session.NHibernateHelper..cctor()in   NHibernateHelper.cs:第18行

我注意到当前对iesi.dll的引用是1.0.1.0。 什么是让它再次运行的最佳方法?尝试找到适当的dll版本或整理清单文件?

1 个答案:

答案 0 :(得分:4)

自上次此应用程序为您运行以来,您是否更新了项目中的一个程序集?看起来NHibernate是针对1.0.0.3版本构建的,你现在有1.0.1.0。

您应该能够在App.config(或web.config,视情况而定)中使用BindingRedirect元素来指示.Net Framework使用不同的版本来满足依赖性。像

这样的东西
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Iesi.Collections" 
                          publicKeyToken="aa95f207798dfdb4"
                          culture="neutral" />
          <bindingRedirect oldVersion="1.0.0.3"
                           newVersion="1.0.1.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>