5 Stimmen

Ist es möglich, zwei Versionen der .NET-Laufzeitumgebung im selben Prozess zu laden?

Es gibt zwei Szenarien, die ich klären muss:

  1. Eine mit .NET 3.5 kompilierte ausführbare Datei muss eine mit .NET 1.1 kompilierte Bibliothek verwenden, und die Bibliothek muss auf der 1.1-Laufzeitumgebung laufen.

  2. Eine mit .NET 1.1 kompilierte ausführbare Datei muss eine mit .NET 3.5 kompilierte Bibliothek verwenden.

Ich kann keine verlässliche Quelle finden, die besagt, dass es nicht möglich ist, zwei Versionen der .NET-Laufzeitumgebung zu laden, und die Dokumentation von Microsoft ist in dieser Frage sehr vage.

7voto

Rob Walker Punkte 45267

Nein - Sie können die CLR nicht zweimal in denselben Prozess laden. Siehe die Dokumentation für CLR-Hosting

Wie bei früheren Versionen des Laufzeitumgebung, initialisiert die Funktion CorBindToRuntimeEx Funktion die Laufzeit initialisiert. Sie können wählen, welche Version der Runtime geladen werden soll, aber ein Prozess kann nur eine Version hosten .

3voto

Constantin Punkte 26508

.NET 4 verspricht, das Hosting verschiedener CLR-Versionen im selben Prozess zu ermöglichen, und zwar mit Hilfe von In-Process Seite an Seite .

2voto

John Rudy Punkte 36386

Gibt es für Fall 1 einen besonderen Grund (z. B. Änderungen), der es erforderlich macht, dass die Bibliothek in der 1.1-Laufzeitumgebung gehostet wird? Ist es möglich, die Bibliothek über einen 1.1-kompilierten Webdienst bereitzustellen und die ausführbare Datei stattdessen auf den Webdienst verweisen zu lassen? (Oder eine andere Remoting-Technik, um die Bibliothek in einen eigenen Prozess einzubinden)?

Ist es im Fall 2 möglich, die 1.1-Anwendung unter 2.0/3.5 neu zu kompilieren, so dass sie im selben Prozess laufen kann?

Auf jeden Fall hat Rob Walker recht (und ich habe hochgestimmt) - man kann einfach nicht 2 Versionen der Laufzeitumgebung im selben Prozess hosten. Also muss man das irgendwie umgehen. Ich könnte mir vorstellen, dass in beiden Fällen der Quellcode verfügbar sein muss, so dass Neukompilierungen und erneute Tests funktionieren sollten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X