Даунгрейд (используйте библиотеку с более низкой версией) с перенаправлением привязки - PullRequest
5 голосов
/ 08 июля 2011

Я использую более старую версию 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 Ответ

3 голосов
/ 14 июля 2011

Вы можете использовать элемент probing, чтобы указать конкретную папку для поиска библиотеки DLL, а затем вы можете просто вставить библиотеку DLL в эту папку.используйте то, что, я думаю, вы ищете.

  <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>

Эта ссылка более подробно описывает это.

...