Frage

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

  1. Eine ausführbare Datei, die mit .NET 3.5 zusammengestellt wurde, muss eine mit .NET 1.1 zusammengestellte Bibliothek verwenden, und die Bibliothek muss auf der Laufzeit 1.1 ausgeführt werden.

  2. Eine ausführbare Datei, die mit .NET 1.1 zusammengestellt wurde, muss eine mit .NET 3.5 zusammengestellte Bibliothek verwenden.

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

War es hilfreich?

Lösung

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

Wie bei früheren Versionen der Laufzeit initialisiert die Corbindtoruntimeex -Funktion die Laufzeit. Sie können auswählen, welche Version der Laufzeit geladen werden soll, aber Ein Prozess kann Host nur eine Version.

Andere Tipps

.NET 4 verspricht, das Hosting verschiedener CLR -Versionen im selben Prozess mittels von zu ermöglichen In-Prozess nebeneinander.

Gibt es für Fall 1 einen bestimmten Grund (z. B. durch Brechen von Änderungen), von denen die Bibliothek in der 1.1 -Laufzeit gehostet werden muss? Ist es möglich, die Bibliothek über einen 1.1-kompilierten Webdienst aufzudecken und stattdessen die ausführbare Datei auf den Webdienst zu zeigen? (Oder eine andere Remoting -Technik, um die Bibliothek in ihrem eigenen Prozess zu erhalten?)

Ist es für Fall 2 möglich, die 1.1 -App unter 2.0/3,5 neu zu kompilieren, so dass sie sich im gleichen Prozess befinden kann?

In jedem Fall hat Rob Walker Recht (und ich habe es aufgestellt) - Sie können einfach 2 Versionen der Laufzeit im selben Prozess nicht hosten. Sie müssen also irgendwie umgehen. Ich würde mir vorstellen, dass in beiden Fällen die Quelle verfügbar sein muss, sodass Neukompilationen und Wiederholungspunkte spielen sollten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top