Carregar várias versões da mesma dll sem colocá-lo no GAC
-
19-09-2019 - |
Pergunta
Eu gostaria de carregar duas versões diferentes da mesma DLL dentro do mesmo processo. Ao mesmo tempo, eu gostaria de evitar qualquer deles no GAC.
Todas as idéias?
Obrigado, Krikor
Solução
Sim, parece que eu tenho que carregar manualmente a montagem, de uma forma ou de outra.
Uma solução que eu encontrei foi a de se inscrever para o evento AssemblyResolve do AppDomain. Este evento é gerado quando um assembly não for encontrado e permite que você fornecê-la manualmente.
- Reregister um manipulador de eventos como este
AppDomain.CurrentDomain.AssemblyResolve + = MyResolveEventHandler;
estática Assembléia MyResolveEventHandler (remetente do objeto, args ResolveEventArgs) { retorno Assembly.LoadFrom (@ "OldAsm \ Asm.dll"); }
- Uma vez que o código que utiliza o código específico é atingido o .NET Framework irá tentar carregar o assembly, ele vai bater e vai chamar seu manipulador (MyResolveEventHandler).
Gostaria de continuar procurando uma maneira de resolver a referência certa, sem ter que escrever qualquer código e sem ter de colocar qualquer coisa no GAC. Se alguém encontra uma maneira, por favor, postá-lo.
Graças
Outras dicas
Activator.CreateInstance. Verifique MSDN para exemplos.