使用绑定重定向降级(使用较低版本的库)

时间:2011-07-08 15:40:31

标签: c# binding assemblies

我正在使用旧版本的NHibernate(v3.0.0.1001)并且我坚持使用它,因为新的LINQ提供程序打破了我的一些查询(稍后我将尝试修复)。我想更新一个使用NHibernate v3.1.0.4000的库。

我尝试在App.config中添加绑定重定向:

<?xml version="1.0"?>
<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.1.0.4000" newVersion="3.0.0.1001"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

但是当我编译时,我得到:

error CS1705: Assembly 'My3rdPartyDll, Version=0.5.0.170, Culture=neutral, PublicKeyToken=null' uses 'NHibernate, Version=3.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' which has a higher version than referenced assembly 'NHibernate, Version=3.0.0.1001, Culture=neutral, PublicKeyToken=aa95f207798dfdb4'

是否可以使用绑定重定向指向降级?

1 个答案:

答案 0 :(得分:3)

您可以使用probing元素指定要查找dll的特定文件夹,然后您可以将dll放到该文件夹​​中。

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <probing privatePath="Assemblies"/> 
    </assemblyBinding>
</runtime>

您可以指定要使用的特定程序集,这是我认为您正在寻找的。

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="WorkflowLibrary1" publicKeyToken="8afb6d596a769080" />
        <codeBase version="1.0.0.0" href="Version_1_0_0_0/WorkflowLibrary1.dll"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

Link详细介绍了这一点。