Загружайте несколько версий одной и той же библиотеки dll, не помещая ее в GAC
-
19-09-2019 - |
Вопрос
Я хотел бы загрузить две разные версии одной и той же библиотеки dll в рамках одного процесса.В то же время я хотел бы избежать размещения любого из них в GAC.
Есть какие-нибудь идеи?
Спасибо, Крикор
Решение
Да, похоже, мне так или иначе придется вручную загрузить сборку.
Одно из решений, которое я нашел, состояло в том, чтобы подписаться на событие AssemblyResolve AppDomain.Это событие возникает, когда сборка не найдена, и позволяет вам предоставить ее вручную.
- Перерегистрируйте обработчик событий следующим образом
Домен приложения.Текущий домен.AssemblyResolve += MyResolveEventHandler;
статическая сборка MyResolveEventHandler(отправитель объекта, аргументы ResolveEventArgs) { возвращает сборку.Загружается с (@"OldAsm\Asm.dll");}
- Как только будет достигнут код, использующий определенный код, .NET Framework попытается загрузить сборку, произойдет сбой и будет вызван ваш обработчик (MyResolveEventHandler).
Я бы продолжал искать способ разрешить правильную ссылку без необходимости писать какой-либо код и без необходимости помещать что-либо в GAC.Если кто-нибудь найдет способ, пожалуйста, опубликуйте его.
Спасибо
Другие советы
Активатор.Создайте экземпляр.Проверьте msdn для получения примеров.