Domanda

Utilizzando la riflessione, devo caricare 2 diverse versioni dello stesso assembly.Posso caricare le 2 versioni in 2 AppDomain diversi nello stesso processo?

Devo eseguire una migrazione dei dati dalla vecchia versione dell'app alla nuova versione.Per favore fatemi sapere se questo è possibile o dovrei utilizzare 2 processi separati.

È stato utile?

Soluzione 2

AGGIORNAMENTO:Ho pensato di pubblicare i miei risultati come risposta.La riflessione si è rivelata troppo complessa in termini di impegno di sviluppo, monitoraggio degli errori di runtime, ecc.Ricordo di aver adottato un approccio diverso utilizzando 2 processi diversi quando mi trovavo di fronte a una situazione simile molto tempo fa (grazie Brandon).

Questo è il piano:Niente di elegante ma più semplice in termini di sviluppo e risoluzione dei problemi.Dato che è un lavoro una tantum, dobbiamo solo farlo funzionare.

Ospita un processo remoto (che io chiamo server) con la nuova versione dell'applicazione.Un client remoto dispone di riferimenti per la versione precedente.

Il client remoto crea un'istanza e carica gli oggetti con i dati richiesti per la migrazione.Converti i vecchi oggetti in oggetti serializzabili comuni e passali come parametri al server.

Remoting Server utilizza i dati comuni per creare un'istanza e caricare i nuovi oggetti.Richiama le funzioni sui nuovi tipi per rendere persistenti i propri dati.

Altri suggerimenti

Se lo stai facendo in fase di progettazione (cosa che indichi di non fare) questo dovrebbe aiutarti:

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

Se lo stai facendo dinamicamente attraverso la riflessione (sembra il caso qui) questo potrebbe aiutarti:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top