Compatibilité binaire C ++ et mises à niveau sans douleur vers Visual Studio 2019

Visual Studio 2019 repousse les limites de la productivité individuelle et d' équipe . Nous espérons que vous trouverez ces nouvelles fonctionnalités convaincantes et que vous commencerez bientôt votre mise à niveau vers Visual Studio 2019.


Alors que vous envisagez cette mise à niveau, soyez assuré que Visual Studio 2019 facilite la migration de votre base de code des versions précédentes de Visual Studio. Cet article capture les raisons pour lesquelles votre mise à niveau vers Visual Studio 2019 sera sans douleur.



Installations Visual Studio côte à côte


Vous pouvez installer la dernière version de Visual Studio sur un ordinateur sur lequel une version antérieure est déjà installée et continuer à utiliser les deux versions en parallèle sans interférence. C'est un excellent moyen d'essayer Visual Studio 2019 ou de l'adopter pour certains de vos projets. Le programme d'installation de Visual Studio vous permettra de gérer les installations de Visual Studio 2017 et 2019 à partir d'une interface utilisateur centrale.


Image du programme d'installation de Visual Studio montrant VS 2017 et VS 2019 installés côte à côte


Jeux d'outils MSVC v140 (VS 2015.3) et MSVC v141 (VS 2017) dans l'IDE de Visual Studio 2019


Même si vous n'êtes pas encore prêt à déplacer votre projet vers le dernier ensemble d'outils (MSVC v142), vous pouvez toujours charger votre projet dans l'IDE Visual Studio 2019 et continuer à utiliser votre ancien ensemble d'outils actuel.


Le chargement de vos projets C ++ existants dans l'EDI ne mettra pas à niveau / ne modifiera pas vos fichiers de projet. De cette façon, vos projets se chargent également dans la version précédente de l'EDI au cas où vous auriez besoin de revenir en arrière ou si vous avez des coéquipiers qui n'ont pas encore mis à niveau vers VS 2019 (cette fonctionnalité est également connue sous le nom de déclenchement circulaire du projet ).


Les jeux d'outils des anciennes installations VS sur votre box sont visibles en tant que jeux d'outils de plate-forme dans le dernier IDE. Et si vous démarrez avec seulement VS 2019 installé sur votre machine, il est très facile d'acquérir ces anciens outils directement à partir du programme d'installation de Visual Studio en personnalisant la charge de travail du bureau C ++ (avec l'onglet Composants individuels répertoriant toutes les options).


Onglet Composants individuels de VS Installer affichant la liste complète des composants C ++ disponibles dans VS 2019


Nouveau jeu d'outils v142 maintenant disponible


Au sein de la vague Visual Studio 2019 (aperçus, sa disponibilité générale et futures mises à jour), nous prévoyons de continuer à faire évoluer nos compilateurs et bibliothèques C ++ avec


  • nouvelles fonctionnalités C ++ 20,
  • un débit de construction plus rapide, et
  • optimisations de codegen encore meilleures.

Le jeu d'outils MSVC v142 est maintenant disponible et il propose déjà plusieurs incitations à la migration.


VC Runtime dans le dernier ensemble d'outils MSVC v142 est compatible binaire avec v140 et v141


Nous l'avons entendu haut et fort qu'une raison majeure contribuant à l'adoption rapide de MSVC v141 aujourd'hui est sa compatibilité binaire avec MSVC v140. Cela vous a permis de migrer votre propre code vers le jeu d'outils v141 à votre rythme, sans avoir à attendre que l'une de vos dépendances de bibliothèque tierces migre en premier.


Nous voulons continuer sur cette lancée et nous assurer que vous avez également une expérience d'adoption réussie avec MSVC v142. C'est pourquoi nous annonçons aujourd'hui que notre équipe s'est engagée à fournir une compatibilité binaire pour MSVC v142 avec MSVC v141 et v140 .


Cela signifie que si vous compilez tout votre code avec le jeu d'outils v142 mais avez toujours une ou plusieurs bibliothèques qui sont construites avec le jeu d'outils v140 ou v141, la liaison de tout cela (avec le dernier éditeur de liens) fonctionnera comme prévu. Pour rendre cela possible, VC Runtime ne change pas sa version principale dans VS 2019 et reste rétrocompatible avec les versions précédentes de VC Runtime.


C:\source\repos\TimerApp\Debug>dumpbin TimerApp2019.exe /IMPORTS | findstr .dll mfc140ud.dll KERNEL32.dll USER32.dll GDI32.dll COMCTL32.dll OLEAUT32.dll gdiplus.dll VCRUNTIME140D.dll ucrtbased.dll 2EE _seh_filter_dll 

Lorsque vous mélangez des binaires créés avec différentes versions prises en charge du jeu d'outils MSVC, il existe une exigence de version pour le VCRedist que vous redistribuez avec votre application. Plus précisément, VCRedist ne peut pas être plus ancien que n'importe quelle version du jeu d'outils utilisée pour créer votre application.


Des centaines de bibliothèques C ++ sur Vcpkg sont disponibles quel que soit le jeu d'outils que vous utilisez


Si vous utilisez Vcpkg aujourd'hui avec VS 2015 ou VS 2017 pour une ou plusieurs de vos dépendances open-source, vous serez heureux d'apprendre que ces bibliothèques (près de 900 au moment de la rédaction de ce document) peuvent maintenant être compilées avec MSVC ensemble d'outils v142 et sont disponibles pour la consommation dans les projets Visual Studio 2019.


Si vous débutez avec Vcpkg, pas de soucis - Vcpkg est un projet open source de Microsoft pour simplifier l'acquisition et la construction de bibliothèques C ++ open source sur Windows, Linux et Mac .


Étant donné que la v142 est compatible binaire avec la v141 et la v140, tous les packages que vous avez déjà installés continueront également à fonctionner dans VS 2019 sans recompilation; cependant, nous vous recommandons de recompiler quand vous le pouvez afin que vous puissiez profiter des nouvelles optimisations du compilateur que nous avons ajoutées à la v142!


Si VS 2019 Preview est installé côte à côte avec une ancienne version de VS (par exemple VS 2017), Vcpkg préférera la version stable, vous devrez donc définir la variable triplet VCPKG_PLATFORM_TOOLSET de Vcpkg sur v142 pour utiliser le dernier ensemble d'outils MSVC.


La version du compilateur MSVC passe à 19.2x (à partir de 19.1x dans MSVC v141)


Enfin et surtout, la partie compilateur du jeu d'outils MSVC v142 change sa version en 19.20 - seulement un incrément de version mineure par rapport à MSVC v141.


Éditeur VS avec Quick Info montrant que la macro _MSC_VER est égale à 1920
Notez que les macros de test de fonctionnalités sont prises en charge dans le compilateur MSVC et STL à partir de MSVC v141 et qu'elles devraient être l'option préférée pour permettre à votre code de prendre en charge plusieurs versions de MSVC.


Appel à l'action


Veuillez télécharger Visual Studio 2019 aujourd'hui et dites-nous ce que vous en pensez. Notre objectif est de rendre votre transition vers VS 2019 aussi simple que possible, donc, comme toujours, nous sommes très intéressés par vos commentaires. Nous pouvons être contactés via les commentaires ci-dessous ou par e-mail ( visualcpp@microsoft.com ).
Si vous rencontrez d'autres problèmes avec Visual Studio ou MSVC ou avez une suggestion, veuillez nous en informer via Aide> Envoyer des commentaires> Signaler un problème / Fournir une suggestion dans le produit ou via la communauté des développeurs . Vous pouvez également nous trouver sur Twitter à @VisualC .

Source: https://habr.com/ru/post/fr439664/


All Articles