Depuis l’arrivée de la première version de la plate-forme Microsoft.Net en 2002, et jusqu’à la dernière version actuelle (4.0), près d’une dizaine de versions se sont succédées ou côtoyées (si l’on inclut les différentes déclinaisons du genre Compact Framework, Micro Framework et bien sûr les services Pack).
Il est fréquent de trouver sur un même ordinateur plusieurs versions du Framework installées. Doit-on désinstaller les versions les plus anciennes et ne conserver que la plus récente ? Pourquoi les versions antérieures ne sont-elles pas écrasées par les plus récentes, lors de l’installation de ces dernières ? Nous allons voir dans cette article, après avoir rappelé ce qu’est l’infrastructure de la plate-forme .Net, qu’avec le Framework .Net la compatibilité, non seulement ascendante mais aussi descendante, n’est pas forcément assurée. Et qu’il peut y avoir par conséquent nécessité à conserver différentes versions du Framework sur sa machine.
Petit rappel sur l’architecture .Net
La plate-forme .Net est basée sur un moteur d’exécution virtuel nommé « Common Language Runtime » (CLR).
Le CLR implémente plusieurs spécifications afin de garantir un niveau de standardisation :
- Le CTS (système de types communs) : il permet à différents langages de partager le même système de types. Par exemple, un type « String » en Visual Basic sera exactement le même type « String » en C++/CLI ou en C# ou en tout autre langage .NET.
- Le CLI (Common Language Infrastructure) : le CLI utilise les méta-données pour décrire les types définis par le CTS. Les méta-données sont incluses dans chaque DLL, EXE, indépendamment du langage de programmation utilisé.
- Le CLS (Common Language Specification) : le CLS définit un contrat de convention entre les concepteurs de langages et concepteurs de librairies de classes. C’est un sous ensemble de CTS qui définit des conventions à utiliser entre chaque langage, afin d’éviter qu’un langage n’utilise des techniques de programmation qui ne soient pas disponibles dans un autre langage. De cette façon, si chaque langage adhère à ses conventions, CLS permet d’hériter d’un type vers un autre langage.
- Le VES (moteur d’exécution virtuel) : le VES implémente et le modèle de CTS. Il est responsable du chargement et de l’exécution des programmes écrits pour le CLI. Il fournit les services nécessaires au bon fonctionnement du code managé et de ses données associées.
Au dessus du CLR, nous trouvons les classes de bases pour les services tels que la sécurité, l’accès aux réseaux, les entrées sorties, etc…
Puis nous trouvons les différentes piles de développement pour : l’accès aux données, le développement d’applications riches de type Windows, le développement d’applications Web…
Récapitulatif des différentes versions
Version Plate-forme | Version du CLR | Date |
V1.0 | V1.0.3705 | Janvier 2002 |
V1.1 | v1.1.4322 | Avril 2003 |
V1.1 SP1 | v1.1.4322 | Aout 2003 |
V2.0 | V2.0.50757.42 | Novembre 2005 |
V3.0 = V2.0 + WF,WCF,WPF,CardSpace | V2.0.50757.42 | Novembre 2006 |
V2.0 SP1 et V3.0 SP1 | V2.0.50757.42 | Novembre 2007 |
V3.5 +Linq | V2.0.50757.1378 | Février 2008 |
V3.5 SP1 | V2.0.50727.3053 | Août 2008 |
V4.0 | V4.0.30319.1 | Avril 2010 |
Prise en compte des différentes versions
Compatibilité ascendante et descendante
Aujourd’hui de nombreux logiciels utilisent le Framework .Net. Toutefois tous n’ont pas été développés avec la même version de l’environnement Microsoft. Si l’on peut évidemment s’attendre à ce que la compatibilité ascendante ne soit pas assurée (ce qui a été développé avec la version 2 ne fonctionne pas avec la version 1), on peut en revanche être étonné de constater que même la compatibilité descendante peut poser problème (ce qui a été développé pour la version 1 ne fonctionnera plus avec la version 2). Bref, le Framework 3.5 ne prend pas nécessairement en charge les applications développées en environnement 2.0.
De fait, le niveau de prise en charge du .Net Framework pour la compatibilité ascendante et descendante diffère selon les versions du framework. Ainsi, le version 1.1 prend en charge la compatibilité ascendante et descendante. Tandis que les autres versions prennent, ou sont censées prendre en charge la compatibilité descendante uniquement. Dans les faits, vous êtes la plupart du temps amenés à gérer des problèmes de compatibilité descendante.
D’où la nécessité d’avoir sur sa machine plusieurs versions du Framework installées simultanément pour faire tourner vos applications.
Quand désinstaller certaines versions de ma machine ?
Si vous n’avez pas d’applications qui tournent sur telle ou telle version du framework, alors vous pouvez désinstaller cette version et conserver la ou les autres.
Noter également que lorsque vous installez un programme qui s’appuie sur tel framework (votre logiciel de facturation préféré par exemple), ce programme installera probablement le framework nécessaire s’il ne le trouve pas sur votre machine.
C’est un peu troublant toutes ces versions installées, ça fait un peu désordre sur son disque dur. Mais hélas! à ce jour c’est ainsi. La nature des modifications apportées aux nouvelles versions du Framework, en apportant à chaque fois des améliorations notables dans le domaine de la sécurité, des performances etc., ne permet pas toujours d’assurer une compatibilité même descendante.