Les versions .NET sont-elles rétrocompatibles?

8

Au fil des ans, différentes versions de .NET ont été déployées sur mes machines clientes via WSUS. Il semble maintenant que sur de nombreuses machines, ces installations se sont arrosées et certaines mises à jour de sécurité .NET échouent.

J'ai vérifié que je peux exécuter l'outil de nettoyage .NET pour se débarrasser de toutes les installations .NET sur un client, puis je peux pousser .NET 3.5 via WSUS. Cela semble avoir résolu les problèmes que j'ai sur la machine sur laquelle je l'ai essayé.

La question est donc: si j'ai .NET 3.5, y a-t-il une raison pour que les versions précédentes soient également installées?

Boden
la source

Réponses:

14

La rétrocompatibilité est un mauvais terme à utiliser. .NET 1.0, 1.1 et 2.0 sont leurs propres frameworks qui n'ont aucune compatibilité entre eux. .NET 3.0 et 3.5 sont des super ensembles du framework 2.0, utilisant le framework de base .NET 2.0, avec des DLL supplémentaires pour fournir des fonctionnalités supplémentaires (3.0 comprenait des choses comme WCF et WWF, 3.5 avait des choses comme LINQ). En termes d'exigences d'application:

  • Les applications 1.0 nécessitent l'installation de .NET 1.0.
  • Les applications 1.1 nécessitent l'installation de .NET 1.1.
  • Les applications 2.0 nécessitent l'installation de .NET 2.0, 3.0 ou 3.5.
  • Les applications 3.0 nécessitent l'installation de .NET 3.0 ou 3.5.
  • Les applications 3.5 nécessitent l'installation de .NET 3.5.

Je suis assez certain que .NET 4.0 suit le même modèle que 2.0 - 3.5 (base 2.0 avec des DLL de fonctionnalités supplémentaires). L'installation de .NET 3.5 vous couvrira donc pour les applications .NET 2.0 - 3.5. Vous devrez installer .NET 1.1 si vous exécutez des applications 1.1 (idem pour les applications 1.0).

Evan M.
la source
4
Je suis presque sûr que .net 4 est un tout nouveau CLR qui fonctionne côte à côte avec toutes les versions précédentes - ce n'est pas seulement un pack d'extension comme 3 / 3.5 l'était
Michael Haren
@Michael - Je n'ai toujours pas trouvé d'informations définitives, mais il semble que vous ayez raison. Ma faute.
Evan M.
+1. Réponse géniale. Je ne peux pas vous dire combien de fois j'ai dû expliquer cela à nos ingénieurs de support.
joeqwerty
2
msdn.microsoft.com/en-us/library/bb822049.aspx est un article qui confirme ce que vous dites ci-dessus. Et oui, le 4.0 est autonome, n'a aucune dépendance sur les autres versions.
Larry Smithmier
2

.NET est rétrocompatible dans une certaine mesure, mais vous devez comparer les versions du framework. Ce qu'ils disent, c'est qu'il est compatible côte à côte, ce qui est le problème auquel vous êtes confronté. Il y a certainement une raison pour que d'autres versions soient installées. Une application peut être écrite pour cibler une version spécifique et si cette version n'est pas présente sur une machine, l'application échouera.

squillman
la source
C'est un peu ce que je pensais. Je suppose que je vais devoir le faire machine par machine.
Boden
@Boden: vous pouvez généralement basculer l'application pour cibler un framework différent, mais cela nécessite de modifier un fichier app.config ou web.config pour l'application. Cependant, je déconseille fortement cela, car cela pourrait introduire toute une série de problèmes pour l'application et donc la casser totalement.
squillman
Vous obtiendrez probablement une très bonne couverture en déployant 3.5 maintenant, et 4.0 quand il sortira en avril. 3.5 a le même CLR que 2, vous n'avez donc pas besoin de faire 2 et 3.5. Très peu d'applications exécutent la version 1.1, vous pouvez donc laisser cela de côté et l'inclure uniquement dans les rares cas où cela est nécessaire.
Michael Haren
-1

Non, .net n'est pas rétrocompatible. MS se réserve le droit d'apporter des modifications. 2,0 u à 3,5 sont IIRC, mais c'est plutôt un «côté chanceux». Le concet est doté de tous les frameworks nécessaires, et une application cible le framework sur lequel il a été compilé - cela permet à MS de nettoyer les nouvelles versions et d'introduire des changements non compatibles.

TomTom
la source