Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La compatibilité descendante signifie qu’une application développée pour une version particulière d’une plateforme s’exécutera sur les versions ultérieures de cette plateforme. .NET Framework tente d’optimiser la compatibilité descendante : le code source écrit pour une version de .NET Framework doit être compilé sur les versions ultérieures de .NET Framework, et les fichiers binaires qui s’exécutent sur une version de .NET Framework doivent se comporter de façon identique sur les versions ultérieures de .NET Framework.
Compatibilité des versions pour les applications
Par défaut, une application s’exécute sur la version de .NET Framework pour laquelle elle a été créée. Si cette version n’est pas présente et que le fichier de configuration d’application ne définit pas les versions prises en charge, une erreur d’initialisation .NET Framework peut se produire. Dans ce cas, la tentative d’exécution de l’application échoue.
Pour définir les versions spécifiques sur lesquelles votre application s’exécute, ajoutez un ou plusieurs <éléments supportedRuntime> au fichier de configuration de votre application. Chaque <supportedRuntime> élément répertorie une version prise en charge du runtime, avec la première spécification de la version la plus préférée et la dernière spécification de la version la moins recommandée.
<configuration>
<startup>
<supportedRuntime version="v2.0.50727" />
<supportedRuntime version="v4.0" />
</startup>
</configuration>
Pour plus d’informations, consultez Guide pratique pour configurer une application pour prendre en charge .NET Framework 4 ou 4.x.
Compatibilité des versions pour les composants
Une application peut contrôler la version du .NET Framework sur laquelle elle s’exécute, mais un composant ne peut pas. Les composants et les bibliothèques de classes sont chargés dans le contexte d’une application particulière, et c’est pourquoi ils s’exécutent automatiquement sur la version du .NET Framework sur laquelle l’application s’exécute.
En raison de cette restriction, les garanties de compatibilité sont particulièrement importantes pour les composants. À compter du .NET Framework 4, vous pouvez spécifier le degré auquel un composant est censé rester compatible entre plusieurs versions en appliquant l’attribut System.Runtime.Versioning.ComponentGuaranteesAttribute à ce composant. Les outils peuvent utiliser cet attribut pour détecter les violations potentielles de la garantie de compatibilité dans les futures versions d’un composant.
Compatibilité descendante
.NET Framework 4.5 et versions ultérieures sont rétrocompatibles avec les applications créées avec les versions antérieures du .NET Framework. En d’autres termes, les applications et les composants générés avec les versions précédentes fonctionnent sans modification sur .NET Framework 4.5 et versions ultérieures. Toutefois, par défaut, les applications s’exécutent sur la version du Common Language Runtime pour laquelle elles ont été développées. Vous devrez peut-être fournir un fichier de configuration pour permettre à votre application de s’exécuter sur .NET Framework 4.5 ou versions ultérieures. Pour plus d’informations, consultez la section Compatibilité des versions pour les applications plus haut dans cet article.
Dans la pratique, cette compatibilité peut être rompue par des changements apparemment inconséquentials dans le .NET Framework et des modifications dans les techniques de programmation. Par exemple, les améliorations des performances dans .NET Framework 4.5 peuvent exposer une condition de concurrence qui n’a pas eu lieu sur les versions antérieures. De même, l’utilisation d’un chemin codé en dur vers des assemblies .NET Framework, l’exécution d’une comparaison d’égalité avec une version particulière du .NET Framework, ainsi que l'obtention de la valeur d’un champ privé à l’aide de la réflexion, ne sont pas des pratiques rétrocompatibles. En outre, chaque version du .NET Framework inclut des correctifs de bogues et des modifications liées à la sécurité qui peuvent affecter la compatibilité de certaines applications et composants.
Si votre application ou composant ne fonctionne pas comme prévu sur .NET Framework 4.5 ou une version ultérieure, utilisez les listes de contrôle suivantes :
Si votre application a été développée pour s’exécuter sur n’importe quelle version du .NET Framework à partir de .NET Framework 4.0, consultez compatibilité des applications pour générer des listes de modifications entre votre version .NET Framework ciblée et la version sur laquelle votre application est en cours d’exécution.
Si vous disposez d’une application .NET Framework 3.5, consultez également les problèmes de migration de .NET Framework 4.
Si vous disposez d’une application .NET Framework 2.0, consultez également Modifications dans .NET Framework 3.5 SP1.
Si vous disposez d’une application .NET Framework 1.1, consultez également Modifications dans .NET Framework 2.0.
Si vous recompilez le code source existant à exécuter sur .NET Framework 4.5 ou ses versions de points, ou si vous développez une nouvelle version d’une application ou d’un composant qui cible le .NET Framework 4.5 ou ses versions de points à partir d’une base de code source existante, vérifiez Ce qui est obsolète dans la bibliothèque de classes pour les types et les membres obsolètes, et appliquez la solution de contournement décrite. (Le code compilé précédemment continuera à s’exécuter sur les types et les membres qui ont été marqués comme obsolètes.)
Si vous déterminez qu’une modification dans .NET Framework 4.5 a rompu votre application, vérifiez le schéma des paramètres du runtime, et en particulier l’élément
<AppContextSwitchOverrides>, pour déterminer si vous pouvez utiliser un paramètre d’exécution dans le fichier de configuration de votre application pour restaurer le comportement précédent.Si vous rencontrez un problème qui n’est pas documenté, ouvrez un problème sur le site de la Communauté des développeurs pour .NET ou ouvrez un problème dans le dépôt GitHub Microsoft/dotnet.
Exécution côte à côte
Si vous ne trouvez pas de solution de contournement appropriée pour votre problème, n’oubliez pas que .NET Framework 4.5 (ou l’une de ses versions point) s’exécute côte à côte avec les versions 1.1, 2.0 et 3.5, et est une mise à jour sur place qui remplace la version 4. Pour les applications qui ciblent les versions 1.1, 2.0 et 3.5, vous pouvez installer la version appropriée de .NET Framework sur l’ordinateur cible pour exécuter l’application dans son meilleur environnement. Pour plus d'informations sur l'exécution côte à côte, consultez Exécution côte à côte.