Versions des composants .NET

1. Synthèse des versions des composants du Framework .NET

Version framework .NET Date de sortie CLR .NET Standard(1) Visual Studio Compilateur C# MSBuild
(ToolsVersion)
Version des assemblies .NET Compatibilité Windows
4.7.1 octobre 2017 4.0 2.0(2) VS 2017 (15.3) 7.1 15.0 Cette règle n’est plus applicable(8) 7 SP1, 8.1,
10 Anniversary Update,
2008 R2 SP1, 2012,
2012 R2, 2016
4.7 avril 2017 VS 2017 (15.0)(3) 7.0
4.6.2 août 2016 VS 2015 (14.0)(3) 6.0 14.0 4.0.30319.X
(par ex. 4.0.30319.42000)
4.6.X.X
7 SP1, 8, 8.1, 10,
2008 SP2, 2008 R2 SP1, 2012, 2012 R2
4.6.1 novembre 2015
4.6 juillet 2015 1.3 4.0.30319.X
(par ex. 4.0.30319.18400)
4.5.X.X
Vista SP2, 7 SP1, 8, 8.1, 10,
2008 SP2, 2008 R2 SP1, 2012, 2012 R2
4.5.2 mai 2014 1.2 VS 2013 (12.0)(4) 5.0 12.0(7) Vista, 7, 8, 8.1,
2008 SP2, 2008 R2 SP1, 2012, 2012 R2
4.5.1 novembre 2013
4.5 août 2012 1.1 VS 2012 (11.0)(4) 4.0 4.0.30319.X(6)
(par ex. 4.0.30319.17329)
4.5.X.X
Vista, 7, 8,
2008 SP2, 2008 R2 SP1, 2012
4.0 janvier 2010 VS 2010 (10.0)(5) 4.0 4.0.30319.X
(par ex. 4.0.30319.1/4.0.30319.269)
Vista, 7,
2003, 2008 SP2, 2008 R2 SP1
3.5 novembre 2007 2.0 VS 2008 (9.0) 3.0 3.5 3.5.X.X
(par ex. 3.5.30729.5420)
Vista, 7, 8, 8.1, 10,
2003, 2008 SP2, 2012, 2012 R2, 2008 R2 SP1
3.0 novembre 2006 Visual Studio 2005 (8.0) 2.0 2.0 3.0.X.X
(par ex 3.0.6920.5011)
Vista,
2003, 2008 SP2, 2008 R2 SP1
2.0 janvier 2006 2.0.X.X
(par ex. 2.0.50727.8645)
2003, 2008 SP2, 2008 RS SP1
1.1 avril 2003 1.1 VS 2003 (7.1) 1.2 2003
1.0 janvier 2002 1.0 VS .NET (7.0) 1.0

(1): Version maximum du .NET Standard implémentée par le framework (par exemple: le framework 4.6.1 respecte au maximum le .NET Standard 2.0) (cf. .NET Standard Versions).
(2): La version minimum du framework implémentant le .NET Standard 1.4 est 4.6.1 donc tous les frameworks supérieurs à 4.6.1 respectent le .NET Standard 1.4 et supérieur (cf. .NET Standard Versions).
(3): Visual Studio 2015 et 2017 permettent de compiler des projets du framework 4.7.
(4): Visual Studio 2012 et 2013 permettent de compiler des projets du framework 4.6.2 maximum.
(5): Visual Studio 2010 permet de compiler des projets du Framework 4.0 maximum.
(6): Les frameworks 4.5 et suivants ont remplacés des assemblies du framework 4.0 contrairement aux versions précédant la 4.0 qui ajoutent des assemblies (voir plus bas).
(7): A partir de Visual Studio 2013, MSBuild n’est plus livré avec le framework mais directement avec Visual. Le passage de la version de MSBuild 4.0 à 12.0 est dû à l’alignement avec la version de Visual Studio 2013.
(8): Microsoft conseille de ne plus se baser sur les versions d’assemblies pour déterminer la version du framework (cf. How to: Determine Which .NET Framework Versions Are Installed). Cette règle n’est donc plus applicable.

Remplacement du Framework 4.0 par la version 4.5

Jusqu’à la version 4.0, toutes les versions du framework correspondait à des ajouts d’assemblies. Les assemblies du framework 2.0 sont rangées dans un répertoire particulier, et il en est de même pour le framework 3.0 et 3.5. Il suffisait donc de regarder la version des assemblies pour savoir de quel framework elles dépendaient.

Depuis la version 4.5, Microsoft a remplacé certaines assemblies du Framework 4.0 par des assemblies du framework 4.5 (de même pour les frameworks suivants). Ces nouvelles assemblies sont rangées dans le même répertoire que ceux du 4.0 et surtout leur version ne change que pour le numéro de révision:

Par exemple, l’assembly "clr.dll" dans C:\Windows\Microsoft.NET\Framework\v4.0.30319 aura pour numéro de version:

Version framework .NET Version clr.dll
4.0 4.0.30319.0 à 4.0.30319.17000
4.5 4.0.30319.17001 à 4.0.3019.18400
4.5.1 4.0.30319.18401 à 4.0.30319.33999
4.5.2 4.0.30319.34000 à 4.0.30319.41999
4.6 A partir de 4.0.30319.42000
Ne pas utiliser les versions d’assemblies pour déterminer le framework installé

Il est conseillé de ne plus se baser sur les versions d’assemblies pour déterminer la version du framework. Il faut utiliser la méthode avec la base de registres (cf. How to: Determine Which .NET Framework Versions Are Installed).

Problèmes de compatibilité

Sachant que les assemblies du Framework 4.0 sont remplacées par celles du Framework 4.5 et suivants, il peut se produire une incompatibilité. 2 cas de figure peuvent se produire:

1er cas: compatibilité ascendante
Par exemple, si une application est compilée en ciblant le Framework 4.0 et qu’elle est testée sur une machine comprenant seulement le Framework 4.0. Les assemblies .NET utilisées seront celles du Framework 4.0.
En revanche, si on exécute cette application sur une autre machine où le Framework 4.5 est installée, les assemblies .NET utilisées seront celles du Framework 4.5 (certaines assemblies du Framework 4.0 ayant été remplacées par l’installation du Framework 4.5). Il peut se produire un problème de compatiblité car l’application n’a pas été testée pour les assemblies appartenant au Framework 4.5.
Ce cas de figure est plus rare puisque les assemblies sont théoriquement plus stables lorsque la version augemente.

2e cas: compatibilité descendante
Si on compile une application en ciblant le Framework 4.0 sur une machine où le Framework 4.5 est installée, cette application sera testée en utilisant les assemblies du Framework 4.5.
Si on exécute cette même application sur une autre machine où seul le Framework 4.0 est installé, il peut se produire un problème de compatibilité car l’application n’a pas été testée pour les assemblies appartenant au Framework 4.0.
La solution à ce problème est de forcer à exécuter l’application si le Framework 4.5 en l’indiquant dans le fichier de configuration.

Une solution plus générale serait de tester une application exactement dans la même version de framework que les machines sur lesquelles elle sera déployée.

"Breaking-changes" connus:
Application Compatibility in the .NET Framework 4.5.

Comment indiquer qu’une application nécessite le Framework 4.5 ?

Pour une application WinForms, WPF ou Console, il faut indiquer dans le app.Config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>

Pour une application ASP.NET:

<configuration>
    <system.web>
        <compilation debug="true" strict="false" explicit="true" targetFramework="4.5" />
    </system.web>
</configuration>

Un message sera affiché à l’exécution de l’application si la version nécessaire du framework n’est pas installée.

Comment déterminer la version du framework installé ?

Suite au remplacement du 4.0 par les versions suivantes, on ne peut plus regarder les répertoires d’installation du framework pour savoir si le framework est installée. De nombreuses assemblies se trouveront toujours dans le répertoire C:\Windows\Microsoft.NET\Framework\v4.0.30319 alors qu’elles appartiennent à des frameworks suivants le 4.0.

La méthode consiste à regarder en base de registres en tapant "regedit.exe":

  • Pour les frameworks de 1 à 4: sous la clé HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP se trouve des noeuds avec des numéros correspondant aux versions des frameworks installés.
  • Pour les frameworks supérieurs ou égaux à 4.5: à la clé HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full, se trouvent la valeur "Release". La valeur du DWORD "Release" permet de déterminer le framework:
    Version du Framework .NET Valeur du DWORD Release
    4.7.1 Sur Windows 10: 461308
    Sur tous les autres OS: 461310
    4.7 Sur Windows 10: 460798
    Sur tous les autres OS: 460805
    4.6.2 Sur Windows 10: 394802
    Sur tous les autres OS: 394806
    4.6.1 Sur Windows 10: 394254
    Sur tous les autres OS: 394271
    4.6 Sur Windows 10: 393295
    Sur tous les autres OS: 393297
    4.5.2 379893
    4.5.1
    installé sur Windows 8, Windows 7 SP1 ou Windows Vista SP2
    378758
    4.5.1
    installé sur Windows 8.1 ou Windows Server 2012 R2
    378675
    4.5 378389

Plus d’informations sur: How to: Determine Which .NET Framework Versions Are Installed.

Chemin des assemblies du Framework .NET

Les assemblies du framework se trouvent dans:

C:\Windows\Microsoft.NET\Framework\vX.X

avec "X.X" étant le numéro du framework de 1.0 à 3.5 et 4.0.30319 pour les versions supérieurs à 4.0. Ces assemblies ne doivent pas être référencées dans un projet Visual.

Les assemblies à référencer dans un projet Visual se trouvent dans:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework

Emplacement de MSBuild

Avant Visual Studio 2013, MSBuild était livré avec le Framework .NET et se trouvait dans le répertoire du framework:

  • .NET v2.0: C:\Windows\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe
  • .NET v3.5: C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe
  • .NET v4.0: C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe

A partir de Visual Studio 2013, MSBuild est livré avec Visual et se trouve dans le répertoire "Program Files":

  • Sur une machine 32-bit: C:\Program Files\MSBuild\12.0\bin
  • Sur une machine 64-bit: C:\Program Files (x86)\MSBuild\12.0\bin

2. Synthèse des fonctionnalités par version

Framework

2.0:

  • WinForms,
  • ASP.NET,
  • ADO.NET.

3.0:

  • WPF,
  • WCF,
  • WF,
  • Card Space.

3.5:

  • LinQ,
  • Entity Framework.

4.0:

  • Parallel LinQ,
  • Task Parallel Library.

4.5

  • Modern UI Runtime,
  • Modèle asynchrone basé sur des tâches.

4.5.1

  • Compactage de la pile des objets de grande taille ("large object heap") à la demande,
  • Amélioration de la compilation à la volée ("JIT") sur des machines multicore.

Compilateur C#

Se reporter à la Synthèse des fonctionnalités du langage C# par version.

3. Dates de fin de support

Framework .NET

Version Framework .NET Support standard Support étendu
.NET 3.5 et 3.5 SP1 12/07/2011 12/07/2011
.NET 4.0, 4.5 et 4.5.1 12/01/2016 12/01/2016
.NET 4.5.2(1) 09/01/2018 10/01/2023
.NET 4.6(2) 13/10/2020 14/10/2025
.NET 4.6.1(2)
.NET 4.6.2(2)
.NET 4.7(3) 11/01/2022 11/01/2027
.NET 4.7.1(3)

(1): même cycle de vie que Windows 8.1.
(2): même cycle de vie que Windows 2012.
(3): même cycle de vie que Windows Server 2016.

Visual Studio

Version Visual Studio Support standard Support étendu
VS 2005 12/04/2011 12/04/2016
VS 2008 09/04/2013 10/04/2018
VS 2010 14/07/2015 10/07/2020
VS 2012 09/01/2018 10/01/2023
VS 2013 09/04/2019 09/04/2024
VS 2015 13/10/2020 14/10/2025
VS 2017 12/04/2022 13/04/2027

Windows

Version Windows Support standard Support étendu
Windows Server 2003 14/07/2015
Windows Server 2003 SP2 13/01/2015 14/01/2020
Windows Vista SP2 10/04/2012 11/04/2017
Windows Server 2008 R2 13/01/2015 14/01/2020
Windows 7 SP1 13/01/2015 14/01/2020
Windows 8.1 9/01/2018 10/01/2023
Windows Server 2012 09/10/2018 10/10/2023
Windows 10 13/10/2020 14/10/2025
Windows Server 2016 11/01/2022 11/01/2027

Pour plus d’informations:
Politique de support Microsoft

Leave a Reply