Pregunta

Usando la reflexión, necesito cargar 2 versiones diferentes del mismo ensamblaje.¿Puedo cargar las 2 versiones en 2 AppDomains diferentes en el mismo proceso?

Necesito realizar una migración de datos de la versión anterior de la aplicación a la nueva versión.Avíseme si esto es posible o debería utilizar 2 procesos separados.

¿Fue útil?

Solución 2

ACTUALIZAR:Pensé en publicar mis hallazgos como respuesta.La reflexión resultó demasiado compleja en términos de esfuerzo de desarrollo, seguimiento de errores de tiempo de ejecución, etc.Recuerdo haber hecho un enfoque diferente usando 2 procesos diferentes cuando me enfrenté a una situación similar hace mucho tiempo (Gracias Brandon).

Este es el plan:Nada elegante pero sí más sencillo en términos de desarrollo y resolución de problemas.Dado que es un trabajo único, sólo tenemos que hacerlo funcionar.

Organice un proceso remoto (al que yo llamo servidor) que tenga la nueva versión de la aplicación.Un cliente remoto tiene referencias para la versión anterior.

El cliente remoto crea instancias y carga los objetos con los datos necesarios para la migración.Convierta los objetos antiguos en objetos serializables comunes y páselos como parámetros al servidor.

El servidor remoto utiliza los datos comunes para crear instancias y cargar los nuevos objetos.Invoca las funciones de los nuevos tipos para conservar sus datos.

Otros consejos

Si lo está haciendo en tiempo de diseño (lo cual indica que no), esto debería ayudarlo:

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

Si lo está haciendo dinámicamente a través de la reflexión (parece el caso aquí), esto podría ayudarlo:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top