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

Tom*_*eld 5 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>
Run Code Online (Sandbox Code Playgroud)

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

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'

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

Jet*_*hro 3

您可以使用probingElement指定一个特定的文件夹来查找dll,然后您可以将dll粘贴到该文件夹​​中。

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <probing privatePath="Assemblies"/> 
    </assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)

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

  <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>
Run Code Online (Sandbox Code Playgroud)

链接详细介绍了这一点。