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

Foi útil?

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.

  1. 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"); }

  1. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top