C# Как перенаправить загрузку сборки с помощью файла конфигурации приложения

У меня есть сборка с несколькими версиями, зарегистрированными в GAC. Теперь я хочу, чтобы один из моих клиентов, использующий эту сборку (версия 1.3), указывал на новейшую версию (1.4) без открытия исходного кода и перекомпиляции клиента.
Я видел статью, демонстрирующую способ сделать это с помощью приложения. конфигурационный файл (приложение winform)

вот содержимое конфигурационного файла:

<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:asm="urn:schemas-microsoft-com:asm.v1">
<runtime>
<asm:assemblyBinding>
  <!-- one dependentAssembly per unique assembly name -->
  <asm:dependentAssembly>
    <asm:assemblyIdentity
       name="MyFacade"
       publicKeyToken="c9c18e16df1654e0" />
    <!-- one bindingRedirect per redirection -->
    <asm:bindingRedirect oldVersion="1.3.0.0"
                  newVersion="1.4.0.0" />
  </asm:dependentAssembly>
</asm:assemblyBinding>
</runtime>
</configuration>

Как видите, существует перенаправление привязки с версии 1.3.0.0 на 1.4.0.0 для сборки с именем MyFacade.

Теперь с этим подходом есть только незначительная проблема. Это не работает :)

Я уверен, что это что-то с моим кодом.

Какие-либо предложения?

Спасибо,
Ади Барда


person Benny F    schedule 31.05.2010    source источник
comment
Используйте fuslogvw.exe, чтобы узнать, что рассматривает CLR.   -  person Hans Passant    schedule 31.05.2010


Ответы (1)


во-первых, это лучший источник Я нашел информацию по этому вопросу. Есть некоторые отличия, например, они не используют пространство имен asm:, а также вы можете отключить политику издателя, добавив <publisherPolicy apply="no" />, как описано в статье.

В предыдущем проекте нам требовался еще больший контроль, поэтому нам нужно было отловить AppDomain.AssemblyResolve Event и направить к любой сборке, которую мы хотели. Здесь вы можете найти дополнительную информацию об этой концепции. Однако вам придется манипулировать своим приложением один раз.

person thmshd    schedule 31.05.2010