Question

En utilisant la réflexion, je dois charger 2 versions différentes du même assembly.Puis-je charger les 2 versions dans 2 AppDomains différents dans le même processus ?

Je dois effectuer une migration de données de l'ancienne version de l'application vers la nouvelle version.Veuillez me faire savoir si cela est possible ou dois-je utiliser 2 processus distincts.

Était-ce utile?

La solution 2

MISE À JOUR:J'ai pensé que je publierais mes découvertes comme réponse.La réflexion s'est avérée trop complexe en termes d'effort de développement, de suivi des erreurs d'exécution, etc.Je me souviens avoir adopté une approche différente en utilisant 2 processus différents face à une situation similaire il y a longtemps (merci Brandon).

C'est le plan:Rien d'élégant mais plus simple en termes de développement et de dépannage.Puisqu'il s'agit d'un travail ponctuel, nous devons simplement le faire fonctionner.

Hébergez un processus distant (que j'appelle le serveur) ayant la nouvelle version de l'application.Un client distant a des références pour l’ancienne version.

Le client distant instancie et charge les objets avec les données requises pour la migration.Convertissez les anciens objets en objets sérialisables communs et transmettez-les en paramètres au serveur.

Remoting Server utilise les données communes pour instancier et charger les nouveaux objets.Appelle les fonctions sur les nouveaux types pour conserver leurs données.

Autres conseils

Si vous le faites au moment de la conception (ce que vous indiquez ne pas l'être), cela devrait vous aider :

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

Si vous le faites de manière dynamique par réflexion (cela ressemble au cas ici), cela pourrait vous aider :

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top