2009-03-11 8 views
2

Supposons que j'ai une application utilisateur .NET (.exe) s'exécutant sous Windows qui a été compilée dans .NET Framework version 3.0 (VS2008). Si cette application charge un autre assembly .NET (.dll) qui a été compilé sur un autre ordinateur à l'aide de .NET Framework version 2.0 (VS2005), l'assembly chargé utilisera-t-il le runtime 3.0 existant (qui fonctionnera en mode de rétrocompatibilité)? Ou est-ce que le runtime .NET Framework 2.0 se chargera dans l'espace de processus du système, et nous avons maintenant deux runtimes .NET fonctionnant simultanément? Assignation: Ceci n'utilise pas le ciblage multiple VS2008Plusieurs versions de .NET CLR exécutées simultanément

Répondre

1

S'il se trouve dans le même espace de traitement que vous l'avez indiqué, il fonctionnera sous la version 3.0. Si vous voulez que deux CLR différents tournent, vous devrez créer une limite de service (service Web ou WCF fonctionne bien ici - pas de WCF pour 2.0 évidemment) et appelez le service de l'autre application.

+0

Gregory, quand vous dites deux CLR différents, voulez-vous dire .NET 1.1 CLR? Parce que, après cela, il y a .NET 2.0 CLR et le CLR .NET 4.0 inédit. –

+0

Oui, techniquement, il n'y a que 2,0 avec 3,0 et 3,5 assis sur le dessus. Mais c'est un peu plus compliqué que ça, car techniquement, il y a des librairies que vous pouvez installer sur 2.0, tout en ayant libéré des librairies installées pour 3.5. AJAX vient à l'esprit. –

+0

Mais, techniquement, vous avez 1.0, 1.1 et 2.0 comme les trois bibliothèques de base. –

7

Il n'existe pas de CLR .NET 3.0. .NET 3.0 et 3.5 utilisent tous les deux .NET 2.0 CLR. Bien sûr, si votre application .NET 3.0 utilise les fonctionnalités .NET 3.0, il faudra installer .NET 3.0.

+0

Oh bien, je ne m'en suis pas rendu compte. Donc tout ce qui est 3.0 et 3.5 est un tas de nouveaux assemblages (fondations, etc) que vous pouvez utiliser dans votre code. – Todd

1

Les versions .NET runtime étant généralement rétrocompatibles, le runtime 3.0 hébergera l'assembly 2.0 (sans compter que 3.0 est fondamentalement le même runtime que 2.0). Dans tous les cas, deux versions du CLR ne peuvent pas être chargées dans le même processus.

Questions connexes