Подтвердить что ты не робот

.Net-переадресация связывания с различными маркерами открытого ключа

Возможно ли выполнить переадресацию привязки сборки между различными версиями ссылочной сборки, если токен открытого ключа равен нулю в более старой версии и установлен в более новой версии?

Например, у меня есть две сборки...

System.Web.Mvc, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null

и

System.Web.Mvc, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35

Если следующая переадресация связывания сборки работает в Asp.Net web.config...

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
      <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
    </dependentAssembly>
  </assemblyBinding>
</runtime>
4b9b3361

Ответ 1

Нет, это невозможно. В сборках должен быть такой же publicKeyToken.

Тег bindingRedirect имеет только атрибуты oldVersion и newVersion, поэтому в любом случае нет возможности рассказать об "нулевой" версии.

Ответ 3

Кажется, что привязка-переадресация не может быть использована, но в моем случае мне удалось обойти эту проблему с разными publicKeyTokens, изменив значение токена, запрашиваемое в справочной DLL:

Разберите DLL с IL, замените ссылку, повторно соберите (и перепишите - что может быть проблемой, если у вас нет ключевого файла).

(см. мой комментарий на при ссылках на сборки, можно ли настаивать на номере версии, но игнорировать публикацию? (т.е. принимать подписанные/неподписанные))