2010-04-16 7 views
3

J'ai un doute basique, Comment pouvons-nous avoir les deux CLR sur une même machine. Si cela est possible, lorsque je référence quelques DLL de 4.0 et que je mets le pool d'applications à 2.0, je peux lancer le site web (j'obtiens des erreurs). Quand nous renvoyons les dll à web.config cela signifie qu'il recherche le GAC quand ce 4.0 dll est disponible dans GAC Pourquoi ne pas charger (Comment ça ne se charge pas) .. S'il vous plaît clarifier mes doutesComment se fait .net 4.0 et .net 2.0 CLR peut exister dans une même machine

Répondre

5

Oui, les deux CLR peuvent être sur la même machine - en fait, .NET 4 vous permet d'avoir le même processus qui héberge les deux CLR en même temps!

Différents assemblages dans le GAC auront des versions différentes, donc si vos références spécifient la version, le CLR chargera celui approprié. Bien sûr, vous devez vous assurer que vous avez le CLR approprié chargeant l'assemblage approprié; alors que le CLR v4 peut charger des assemblys v2 (avec certaines restrictions, IIRC), vous ne devriez pas essayer de charger un assembly v4 à partir du CLR v2.

En ce qui concerne les raisons pour lesquelles vous avez des problèmes, c'est vraiment impossible à dire sans plus d'informations. (Chaque fois que vous poser une question et vous avez une erreur, dire ce que l'erreur est.)

+0

Ma façon de répondre être mal alors - je pensais que les versions CLR ont été isolées. Est-ce que cela a changé? –

+0

@Michael: À quel genre d'isolement pensiez-vous? Je crois que vous pouvez utiliser une bibliothèque de classes construite en ciblant .NET 2.0 lors de l'exécution d'une application .NET 4, par exemple - ne vous attendiez-vous pas à ce que cela fonctionne? IIRC il y a quelques restrictions autour du code natif cependant; Les assemblages en mode mixte doivent être reconstruits. –

+0

Salut Jon Skeet, Le problème que je suis confronté est, j'essaye de courir un site Web avec le pool d'application pointe vers 2.0 et le web.config de ce webisite pointe vers une partie du 4.0 dll, ainsi j'obtiens l'erreur qui pourrait pas charger un assemly. Mais mon doute est que même le GAC a ces dll's Y ne peut-il pas les charger. –

3

Les pools d'applications sont configurés pour exécuter une version spécifique de la structure. Il utilise cette information pour déterminer quel assembly charger à partir de GAC.

Vous ne pouvez pas charger un assembly .NET 4 à partir d'une application/d'un processus 2.0.

Vous pouvez avoir 1,0, 1,1, 2, 3, 3,5 et 4 tous installés côte à côte.

Questions connexes