Guide du portage et de la mise à niveau de Visual C++Visual C++ Porting and Upgrading Guide

Cette rubrique est destinée à vous guider lors de la mise à niveau du code Visual C++.This topic provides a guide for upgrading Visual C++ code. Elle explique comment convertir le code pour qu'il se compile et s'exécute correctement sur une version plus récente des outils, et comment tirer parti des nouvelles fonctionnalités de langage et de Visual Studio.This includes getting the code to compile and run correctly on a newer release of the tools, as well as taking advantage of new language and Visual Studio features. Cette rubrique inclut également des informations sur la migration des applications héritées vers des plateformes plus récentes.This topic also includes information about migrating legacy apps to more modern platforms.

Raisons justifiant la mise à niveau du code Visual C++Reasons to Upgrade Visual C++ Code

Vous devez envisager la mise à niveau de votre code pour les raisons suivantes :You should consider upgrading your code for the following reasons:

  • Code plus rapide, grâce à de nouvelles optimisations apportées au compilateur.Faster code, due to improved compiler optimizations.

  • Builds plus rapides, grâce à l'amélioration des performances du compilateur.Faster builds, due to performance improvements in the compiler itself.

  • Conformité aux normes améliorée.Improved standards conformance. Visual C++ implémente désormais de nombreuses fonctionnalités conformes aux normes C++ les plus récentes.Visual C++ now implements many features from the latest C++ standards.

  • Sécurité renforcée,Better security. grâce aux fonctionnalités de sécurité, telles que la protection du flux de contrôle.Security features such as guard checking.

Déplacement de votre codePorting your Code

Dans le cadre de la mise à niveau, commencez par faire le point sur le code et les projets de votre application.When upgrading, first consider your application's code and projects. Votre application a-t-elle été développée avec Visual Studio ?Is your application built with Visual Studio? Dans ce cas, identifiez les projets concernés.If so, identify the projects involved. Utilisez-vous des scripts de compilation personnalisés ?Do you have custom build scripts? Si vous utilisez des scripts de compilation personnalisés au lieu du système de génération de Visual Studio, vous aurez plus de tâches à effectuer vous-même pendant la mise à niveau, car Visual Studio ne pourra pas mettre à jour vos fichiers projet et paramètres de génération automatiquement.If you have custom build scripts instead of using Visual Studio's build system, you will have more work to do in upgrading, because you can't save time by having Visual Studio update your project files and build settings.

Le format du système de génération et des fichiers projet a changé dans Visual Studio. Depuis Visual Studio 2010, MSBuild a remplacé vcbuild qui était utilisé dans Visual Studio 2008 et les versions antérieures.The build system and project file format in Visual Studio changed from vcbuild in versions up to Visual Studio 2008 to MSBuild in versions of Visual Studio from 2010 onwards. Si vous effectuez la mise à niveau d'une solution créée dans une version antérieure à 2010 et que vous utilisez un système de génération très personnalisé, le processus de mise à niveau sera sans doute plus complexe.If your upgrade is from a version prior to 2010, and you have a highly customized build system, you might have to do more work to upgrade. Si vous mettez à niveau une solution créée dans Visual Studio 2010 ou une version ultérieure, votre projet est déjà basé sur MSBuild. Le processus de mise à niveau et de compilation de votre application sera donc plus facile en principe.If you are upgrading from Visual Studio 2010 or later, your projects are already using MSBuild, so upgrading the project and build for your application should be easier.

Si vous n'utilisez pas le système de génération de Visual Studio, vous devez envisager la mise à niveau vers MSBuild.If you are not using Visual Studio's build system, you should consider upgrading to use MSBuild. Si vous faites ce choix, vous pourrez effectuer les futures mises à niveau plus rapidement et vous aurez plus facilement accès à divers services, tels que Visual Studio Online.If you upgrade to use MSBuild, you might have an easier time in future upgrades, and it will be easier to use services such as Visual Studio Online. MSBuild prend en charge toutes les plateformes cibles prises en charge par Visual Studio.MSBuild supports all the target platforms that Visual Studio supports.

Déplacement de projets Visual StudioPorting Visual Studio Projects

Pour commencer la mise à niveau d'un projet ou d'une solution, ouvrez simplement la solution dans la nouvelle version de Visual Studio et suivez les indications affichées.To start upgrading a project or solution, just open the solution in the new version of Visual Studio, and follow the prompts to start upgrading it. Quand vous mettez à niveau un projet, un rapport de mise à niveau est généré et enregistré dans votre dossier de projet sous le nom UpgradeLog.htm.When you upgrade a project, you get an upgrade report, which is also saved in your project folder as UpgradeLog.htm. Ce rapport récapitule les problèmes rencontrés pendant la mise à niveau, et fournit des informations sur les modifications apportées ou sur les problèmes qui n'ont pas pu être résolus automatiquement.The upgrade report shows a summary of what problems were encountered during the upgrade process and some information about changes that were made, or problems that could not be addressed automatically.

  1. Propriétés de projetProject properties

  2. Fichiers IncludeInclude files

  3. Code qui ne se compile plus correctement en raison des améliorations de la conformité du compilateur ou des modifications de la normeCode that no longer compiles cleanly due to compiler conformance imrovements or changes in the standard

  4. Code qui fait appel à des fonctionnalités Visual Studio ou Windows qui ne sont plus disponibles, ou à des fichiers d’en-tête qui ne sont pas inclus dans une installation par défaut de Visual Studio ou qui ont été supprimés du produit.Code that relies on Visual Studio or Windows features that are no longer available or header files that either aren't included in a default installation of Visual Studio, or were removed from the product

  5. Code qui ne se compile plus à cause des modifications apportées aux API (par exemple, API renommées, signatures de fonction modifiées ou fonctions déconseillées).Code that no longer compiles due to changes in APIs such as renamed APIs, changed function signatures, or deprecated functions

  6. Code qui ne se compile plus à cause des modifications apportées aux diagnostics (par exemple, un avertissement transformé en erreur).Code that no longer compiles due to changes in diagnostics, such as warning becoming an error

  7. Erreurs de l'éditeur de liens dues aux modifications de bibliothèques, en particulier quand /NODEFAULTLIB est utilisé.Linker errors due to libraries that were changed, especially when /NODEFAULTLIB is used.

  8. Erreurs d'exécution ou résultats inattendus dus à des changements de comportement.Runtime errors or unexpected results due to behavior changes

  9. Erreurs elles-mêmes provoquées par des erreurs introduites dans les outils.Errors due to errors that were introduced in the tools. Si vous rencontrez un problème, signalez-le à l’équipe Visual C++ via vos modes de contact du support technique habituels ou dans le Centre des commentaires Visual Studio.If you encounter an issue, report it to the Visual C++ team through your normal support channels or by using the Visual Studio Feedback Center.

    Certaines modifications sont inévitables pour résoudre les erreurs de compilateur, d'autres sont facultatives dans un processus de mise à niveau. Par exemple :In addition to changes that you can't avoid due to compiler errors, some changes are optional in an upgrade process, such as:

  10. L'affichage de nouveaux avertissements peut être le signe qu'un nettoyage de votre code est nécessaire.New warnings might mean you want to clean up your code. En fonction des diagnostics spécifiques, cela peut améliorer la portabilité, la conformité aux normes et la sécurité de votre code.Depending on the specific diagnostics, this can improve the portability, standards conformance, and security of your code.

  11. Vous pouvez exploiter les nouvelles fonctionnalités du compilateur, telles que l’option de compilateur /guard:cf (Activer la protection du flux de contrôle), qui permet de vérifier si du code non autorisé est exécuté.You might want to take advantage of newer compiler features such as the /guard:cf (Enable Flow Control Guard) compiler option, which adds checks for unauthorized code execution.

  12. Vous pouvez mettre à jour le code pour utiliser les nouvelles fonctionnalités de langage qui simplifient l’écriture du code, améliorer les performances de vos programmes, utiliser les bibliothèques actuelles, et rendre le code conforme aux normes et meilleures pratiques récentes.You might want to update some code to use new language features that simplify the code, improve the performance of your programs, or update the code to use modern libraries and conform to modern standards and best practices.

    Une fois que vous avez mis à niveau et testé votre projet, vous pouvez également songer à améliorer encore votre code ou planifier sa future orientation, ou même reconsidérer l’architecture de votre projet.Once you've upgraded and tested your project, you might also want to consider improving your code further or plan the future direction of your code, or even reconsider the architecture of your project. Fera-t-il l’objet de travaux de développement suivis ?Will it receive ongoing development work? Est-ce important que votre code puisse s'exécuter sur d'autres plateformes ?Will it be important for your code to run on other platforms? Et sur quelles plateformes ?If so, what platforms? C++ est un langage normalisé conçu pour faciliter le développement d'applications multiplateforme et garantir leur portabilité. Pourtant, le code de nombreuses applications Windows dépend encore étroitement de la plate-forme Windows.C++ is a standardized langauge designed with portability and cross-platform development in mind, and yet the code for many Windows applications is strongly tied to the Windows platform. Souhaitez-vous refactoriser votre code pour isoler les parties de code qui sont le plus liées à la plateforme Windows ?Do you want to refactor your code, to separate out those parts that are more tied to the Windows platform?

    Qu'en est-il de votre interface utilisateur ?What about your user interface? Si vous utilisez MFC, vous pouvez mettre à jour l'interface utilisateur.If you are using MFC, you might want to update the UI. Utilisez-vous l'une des nouvelles fonctionnalités MFC introduites dans Visual Studio 2008 sous forme de Feature Pack ?Are you using any of the newer MFC features that were introduced in 2008 as a Feature Pack? Si vous souhaitez seulement donner à votre application une apparence plus actuelle, sans réécrire entièrement le code, vous pouvez envisager d’utiliser des API de ruban dans MFC ou certaines nouvelles fonctionnalités de MFC.If you just want to give your app a newer look and feel, without rewriting the entire app, you might consider using the ribbon APIs in MFC, or using some of new features of MFC.

    Si vous souhaitez donner à votre programme une interface utilisateur XAML, mais ne voulez pas créer une application UWP, vous pouvez utiliser C# avec WPF pour créer la couche d’interface utilisateur et refactoriser votre logique C++ standard en DLL.If you want to give your program a XAML user-interface but don't want to create a UWP app, you can use C# with WPF to create the UI layer and refactor your standard C++ logic into DLLs. Créez une couche d’interopérabilité en C++/CLI pour connecter C# à votre code natif.Create an interoperability layer in C++/CLI to connect C# with your native code. Une autre option consiste à créer une application UWP avec C++/CX ou C++/WinRT.Another option is to create a UWP app using C++/CX or C++/WinRT. Dans Windows 10, vous pouvez utiliser Desktop App Converter pour empaqueter votre application de bureau existante comme application UWP sans avoir à modifier le code.In Windows 10, you can use the Desktop App Converter to package your existing desktop application as a UWP app without having to modify any code.
    Ou bien, vous avez peut-être maintenant de nouvelles exigences à respecter, ou vous voulez préparer votre application pour le ciblage d’autres plateformes que le Bureau Windows, telles que Windows Phone ou des appareils Android.Alternatively, perhaps you now have new requirements, or you can foresee the need for targeting platforms other than Windows desktop, such as Windows Phone, or Android devices. Vous pouvez déplacer votre code d'interface utilisateur vers une bibliothèque d'interface utilisateur multiplateforme.You could port your user interface code to a cross-platform UI library. Avec toutes ces infrastructures d’interface utilisateur, vous pouvez cibler divers appareils, tout en continuant d’utiliser Visual Studio et le débogueur Visual Studio comme environnement de développement.With these UI frameworks, you can target multiple devices and still use Visual Studio and the Visual Studio debugger as your development environment.

TitreTitle DescriptionDescription
Mise à niveau de projets à partir de versions antérieures de Visual C++Upgrading Projects from Earlier Versions of Visual C++ Explique comment utiliser des projets créés dans les versions antérieures de Visual C++.Discusses how to use projects created in earlier versions of Visual C++.
Nouveautés du compilateur C++ dans Visual Studio 2017 RCWhat's New for The C++ compiler in Visual Studio 2017 RC Modifications dans l’IDE et les outils entre Visual Studio 2015 et Visual Studio 2017Changes in the IDE and tools from Visual Studio 2015 to Visual Studio 2017
Améliorations de la conformité de C++ dans Visual Studio 2017C++ conformance improvements in Visual Studio 2017 Améliorations de la conformité aux normes entre Visual Studio 2015 et Visual Studio 2017Standards conformance improvements from Visual Studio 2015 to Visual Studio 2017
Historique des modifications de Visual C++ entre 2003 et 2015Visual C++ change history 2003 - 2015 Liste de toutes les modifications apportées aux bibliothèques Visual C++ et outils de génération entre Visual Studio 2003 et 2015 qui pourraient vous contraindre à modifier votre code.A list of all the changes in the Visual C++ libraries and build tools from Visual Studio 2003 through 2015 that might require changes in your code.
Nouveautés de Visual C++ entre 2003 et 2015Visual C++ What's New 2003 through 2015 Toutes les informations relatives aux « nouveautés » pour Visual C++ de Visual Studio 2003 à Visual Studio 2015.All the "what's new" information for Visual C++ from Visual Studio 2003 through Visual Studio 2015.
Portage de bibliothèques tiercesPorting 3rd-party libraries Mode d’utilisation de l’outil en ligne de commande vcpkg pour transférer d’anciennes bibliothèques open source vers des versions compilées avec des ensembles d’outils Visual C++ plus récents.How to use the vcpkg command line tool to port older open-source libraries to versions compiled with more recent Visual C++ toolsets.
Portage et mise à niveau : exemples et études de casPorting and Upgrading: Examples and Case Studies Dans cette section, nous avons déplacé et mis à niveau plusieurs exemples et applications, puis présenté nos expériences et résultats.For this section, we ported and upgrades several samples and applications and discussed the experiences and results. Cela vous donnera une idée de ce qu'impliquent les processus de déplacement et de mise à niveau.You might find that reading these gives you a sense of what is involved in the porting and upgrading process. Nous donnons des conseils et astuces à suivre pendant toute la mise à niveau, et indiquons des solutions pour corriger certaines erreurs courantes.Throughout the process, we discuss tips and tricks for upgrading and show how specific errors were fixed.
Portage vers la plateforme universelle WindowsPorting to the Universal Windows Platform Contient des informations sur le déplacement de code vers Windows 10Contains information about porting code to Windows 10
Introduction à Visual C++ pour les utilisateurs UNIXIntroduction to Visual C++ for UNIX Users Fournit des informations aux utilisateurs UNIX qui débutent avec Visual C++ et souhaitent être plus productifs.Provides information for UNIX users who are new to Visual C++ and want to become productive with it.
Portage d’UNIX vers Win32Porting from UNIX to Win32 Présente les différentes options pour migrer des applications UNIX vers Windows.Discusses options for migrating UNIX applications to Windows.
Initiation à la migration de C++/CLIC++/CLI Migration Primer Explique en détail comment mettre à niveau la syntaxe de vos extensions managées pour C++ par rapport à la nouvelle syntaxe.Shows in detail how to upgrade your Managed Extensions for C++ syntax to use the new syntax. Pour plus d’informations, consultez Extensions de composant pour les plateformes Runtime.For more information, see Component Extensions for Runtime Platforms.

Voir aussiSee Also

Visual C++Visual C++