Question

Il y a deux scénarios que je dois clarifier:

  1. Un exécutable compilé avec .NET 3.5 doit utiliser une bibliothèque compilée avec .NET 1.1 et la bibliothèque doit être exécutée à l'exécution 1.1.

  2. Un exécutable compilé avec .NET 1.1 doit utiliser une bibliothèque compilée avec .NET 3.5.

Je ne trouve pas de source fiable indiquant qu'il est impossible de charger deux versions du moteur d'exécution .NET et que la documentation de Microsoft est très vague sur ce sujet.

Était-ce utile?

La solution

Non, vous ne pouvez pas charger le CLR dans le même processus deux fois. Consultez la documentation pour Hébergement CLR

.
  

Comme avec les versions précédentes du   runtime, le CorBindToRuntimeEx   La fonction initialise le runtime. Vous   peut choisir quelle version du   exécution à charger, mais un processus peut    héberger une seule version .

Autres conseils

.NET 4 promet d’héberger différentes versions du CLR dans le même processus au moyen de En cours de traitement côte à côte .

Pour le cas n ° 1, y a-t-il une raison particulière (par exemple, la rupture des modifications) qui nécessite que la bibliothèque soit hébergée dans le runtime 1.1? Est-il possible d'exposer la bibliothèque via un service Web compilé avec la version 1.1 et de faire en sorte que l'exécutable pointe sur le service Web? (Ou une autre technique de communication à distance, pour que la bibliothèque soit dans son propre processus?)

Pour le cas n ° 2, est-il possible de recompiler l'application 1.1 sous la version 2.0 / 3.5, de sorte qu'elle puisse résider dans le même processus?

Quoi qu’il en soit, Rob Walker a raison (et j’ai voté favorablement). Vous ne pouvez tout simplement pas héberger deux versions du moteur d’exécution dans le même processus. Vous devez donc contourner le problème. J'imagine que dans les deux cas, la source doit être disponible, les recompilations et les nouveaux tests doivent donc être lus.

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