Загружайте несколько версий одной и той же библиотеки dll, не помещая ее в GAC

StackOverflow https://stackoverflow.com/questions/2029007

  •  19-09-2019
  •  | 
  •  

Вопрос

Я хотел бы загрузить две разные версии одной и той же библиотеки dll в рамках одного процесса.В то же время я хотел бы избежать размещения любого из них в GAC.

Есть какие-нибудь идеи?

Спасибо, Крикор

Это было полезно?

Решение

Да, похоже, мне так или иначе придется вручную загрузить сборку.

Одно из решений, которое я нашел, состояло в том, чтобы подписаться на событие AssemblyResolve AppDomain.Это событие возникает, когда сборка не найдена, и позволяет вам предоставить ее вручную.

  1. Перерегистрируйте обработчик событий следующим образом

Домен приложения.Текущий домен.AssemblyResolve += MyResolveEventHandler;

статическая сборка MyResolveEventHandler(отправитель объекта, аргументы ResolveEventArgs) { возвращает сборку.Загружается с (@"OldAsm\Asm.dll");}

  1. Как только будет достигнут код, использующий определенный код, .NET Framework попытается загрузить сборку, произойдет сбой и будет вызван ваш обработчик (MyResolveEventHandler).

Я бы продолжал искать способ разрешить правильную ссылку без необходимости писать какой-либо код и без необходимости помещать что-либо в GAC.Если кто-нибудь найдет способ, пожалуйста, опубликуйте его.

Спасибо

Другие советы

Активатор.Создайте экземпляр.Проверьте msdn для получения примеров.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top