2008-09-12 8 views
22

Mit Reflektion, muss ich 2 verschiedene Versionen der gleichen Baugruppe laden. Kann ich die 2 Versionen in 2 verschiedenen AppDomains im selben Prozess laden?Loading verschiedene Versionen der gleichen Baugruppe

Ich muss einige Datenmigration von der alten Version der App auf die neue Version vornehmen. Bitte lassen Sie mich wissen, wenn dies möglich ist oder sollte ich 2 separate Prozesse verwenden.

Antwort

5

UPDATE: ich dachte, ich meine Erkenntnisse als Antwort hinterlassen wird. Die Reflexion erwies sich als zu komplex im Hinblick auf den Entwicklungsaufwand, das Verfolgen von Laufzeitfehlern usw. Ich erinnere mich daran, einen anderen Ansatz mit zwei verschiedenen Prozessen zu machen, wenn ich in einer ähnlichen Situation lange zurückblicke (Danke Brandon).

Dies ist der Plan: Nichts elegant, aber einfacher in Bezug auf die Entwicklung und Fehlerbehebung. Da es sich um einen einmaligen Job handelt, müssen wir es einfach funktionieren lassen.

Host einen Remoting-Prozess (den ich den Server nennen) mit der neuen Version der Anwendung. Ein Remoting-Client verfügt über Referenzen für die ältere Version.

Remoting-Client instanziiert und lädt die Objekte mit Daten, die für die Migration erforderlich sind. Konvertieren Sie die alten Objekte in allgemeine serialisierbare Objekte und übergeben Sie sie als Parameter an den Server.

Der Remoting-Server verwendet die allgemeinen Daten zum Instanziieren und Laden der neuen Objekte. Ruft die Funktionen der neuen Typen auf, um ihre Daten beizubehalten.

14

Wenn Sie es zur Entwurfszeit tun (die Sie Sie angeben, sind nicht) sollte Ihnen helfen:

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

Wenn Sie es dynamisch durch Reflexion tun (sieht aus wie der Fall hier) diese könnte Ihnen helfen:

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

+2

Gute Links, danke. –

+1

Yeah ... Der erste gibt mir, und ein paar andere Jungs, Probleme mit "Assembly bereits referenziert". 7-jährige Post, und ich kann immer noch keine Auflösung oder Erklärung im Kommentarfeld dieses Beitrags sehen. Leute von SO, helfen? – Nilzor

+0

Der InfoSysblog (zweiter Link) ist jetzt ein toter Link. Irgendwelche Vorschläge? –