Загрузите несколько версий одной и той же DLL, не помещая ее в GAC - PullRequest
0 голосов
/ 08 января 2010

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

Есть идеи?

Спасибо, Григор

Ответы [ 2 ]

0 голосов
/ 10 января 2010

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

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

  1. Перерегистрация обработчика событий, как этот

AppDomain.CurrentDomain.AssemblyResolve + = MyResolveEventHandler;

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

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

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

Спасибо

0 голосов
/ 08 января 2010

Activator.CreateInstance. Проверьте msdn для примеров.

...