Pergunta

Usando reflexão, preciso carregar 2 versões diferentes do mesmo assembly.Posso carregar as 2 versões em 2 AppDomains diferentes no mesmo processo?

Preciso fazer alguma migração de dados da versão antiga do aplicativo para a nova versão.Por favor, deixe-me saber se isso é possível ou devo usar 2 processos separados.

Foi útil?

Solução 2

ATUALIZAR:Pensei em postar minhas descobertas como resposta.A reflexão provou ser muito complexa em termos de esforço de desenvolvimento, rastreamento de erros de tempo de execução, etc.Lembro-me de fazer uma abordagem diferente usando 2 processos diferentes quando enfrentei uma situação semelhante há muito tempo (obrigado, Brandon).

Este é o plano:Nada elegante, mas mais fácil em termos de desenvolvimento e solução de problemas.Como é um trabalho único, só precisamos fazê-lo funcionar.

Hospede um processo remoto (que chamo de servidor) com a nova versão do aplicativo.Um cliente remoto possui referências para a versão mais antiga.

O cliente remoto instancia e carrega os objetos com os dados necessários para a migração.Converta os objetos antigos em objetos serializáveis ​​comuns e passe como parâmetros para o servidor.

O Remoting Server usa os dados comuns para instanciar e carregar os novos objetos.Invoca as funções nos novos tipos para persistir os seus dados.

Outras dicas

Se você estiver fazendo isso em tempo de design (o que você indica que não está), isso deve ajudá-lo:

http://blogs.msdn.com/abhinaba/archive/2005/11/30/498278.aspx

Se você estiver fazendo isso dinamicamente por meio de reflexão (parece o caso aqui), isso pode ajudá-lo:

http://infosysblogs.com/microsoft/2007/04/loading_multiple_versions_of_s.html

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