Binäre C ++ - Kompatibilität und schmerzfreie Upgrades auf Visual Studio 2019

Visual Studio 2019 erweitert die Grenzen der Produktivität von Einzelpersonen und Teams . Wir hoffen, dass Sie diese neuen Funktionen überzeugend finden und bald mit dem Upgrade auf Visual Studio 2019 beginnen.


Wenn Sie über dieses Upgrade nachdenken, können Sie sicher sein, dass es mit Visual Studio 2019 sehr einfach ist, Ihre Codebasis von früheren Versionen von Visual Studio zu verschieben. In diesem Beitrag werden die Gründe aufgeführt, warum Ihr Upgrade auf Visual Studio 2019 schmerzfrei ist.



Side-by-Side-Visual Studio-Installationen


Sie können die neueste Version von Visual Studio auf einem Computer installieren, auf dem bereits eine frühere Version installiert ist, und beide Versionen ohne Störungen parallel verwenden. Dies ist eine großartige Möglichkeit, Visual Studio 2019 auszuprobieren oder für einige Ihrer Projekte zu übernehmen. Mit dem Visual Studio-Installationsprogramm können Sie Installationen von Visual Studio 2017 und 2019 über eine zentrale Benutzeroberfläche verwalten.


Visual Studio Installer-Image, das zeigt, wie VS 2017 und VS 2019 nebeneinander installiert werden


Toolsets für MSVC v140 (VS 2015.3) und MSVC v141 (VS 2017) in der Visual Studio 2019-IDE


Auch wenn Sie noch nicht bereit sind, Ihr Projekt auf das neueste Toolset (MSVC v142) zu verschieben, können Sie Ihr Projekt dennoch in die Visual Studio 2019-IDE laden und Ihr aktuelles älteres Toolset weiterhin verwenden.


Durch das Laden Ihrer vorhandenen C ++ - Projekte in die IDE werden Ihre Projektdateien nicht aktualisiert / geändert. Auf diese Weise werden Ihre Projekte auch in der vorherigen Version der IDE geladen, falls Sie zurückkehren müssen oder Teamkollegen haben, die noch nicht auf VS 2019 aktualisiert wurden (diese Funktionalität wird auch als Projekt-Roundtripping bezeichnet ).


Toolsets aus älteren VS-Installationen auf Ihrer Box werden in der neuesten IDE als Plattform-Toolsets angezeigt. Wenn Sie neu starten und nur VS 2019 auf Ihrem Computer installiert ist, können Sie diese älteren Toolsets ganz einfach direkt vom Visual Studio Installer abrufen, indem Sie die C ++ Desktop-Arbeitslast anpassen (auf der Registerkarte Einzelkomponenten werden alle Optionen aufgelistet).


Registerkarte Einzelkomponenten von VS Installer mit der vollständigen Liste der in VS 2019 verfügbaren C ++ - Komponenten


Neues v142-Toolset jetzt verfügbar


Innerhalb der Wave von Visual Studio 2019 (Vorschau, allgemeine Verfügbarkeit und zukünftige Updates) planen wir, unsere C ++ - Compiler und -Bibliotheken mit weiterzuentwickeln


  • neue C ++ 20 Funktionen,
  • schnellerer Build-Durchsatz und
  • noch bessere Codegen-Optimierungen.

Das MSVC v142-Toolset ist jetzt verfügbar und bietet Ihnen bereits mehrere Anreize für die Migration.


VC Runtime im neuesten MSVC v142-Toolset ist binär kompatibel mit v140 und v141


Wir haben laut und deutlich gehört, dass ein Hauptgrund für die schnelle Einführung von MSVC v141 heute die binäre Kompatibilität mit MSVC v140 ist. Auf diese Weise konnten Sie Ihren eigenen Code in Ihrem eigenen Tempo auf das v141-Toolset migrieren, ohne warten zu müssen, bis eine der Bibliotheksabhängigkeiten von Drittanbietern zuerst migriert wurde.


Wir möchten die Dynamik aufrechterhalten und sicherstellen, dass Sie auch mit MSVC v142 eine ähnlich erfolgreiche Adoptionserfahrung haben. Aus diesem Grund geben wir heute bekannt, dass sich unser Team verpflichtet hat , Binärkompatibilität für MSVC v142 mit MSVC v141 und v140 bereitzustellen .


Dies bedeutet, dass, wenn Sie Ihren gesamten Code mit dem Toolset v142 kompilieren, aber noch eine oder mehrere Bibliotheken haben, die mit dem Toolset v140 oder v141 erstellt wurden, die Verknüpfung des gesamten Codes (mit dem neuesten Linker) wie erwartet funktioniert. Um dies zu ermöglichen, ändert VC Runtime seine Hauptversion in VS 2019 nicht und bleibt abwärtskompatibel mit früheren VC Runtime-Versionen.


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 

Wenn Sie Binärdateien mischen, die mit verschiedenen unterstützten Versionen des MSVC-Toolset erstellt wurden, besteht für den VCRedist eine Versionsanforderung, die Sie mit Ihrer App neu verteilen. Insbesondere darf der VCRedist nicht älter sein als eine der Toolset-Versionen, die zum Erstellen Ihrer App verwendet wurden.


Unabhängig vom verwendeten Toolset sind Hunderte von C ++ - Bibliotheken in Vcpkg verfügbar


Wenn Sie Vcpkg heute mit VS 2015 oder VS 2017 für eine oder mehrere Ihrer Open-Source-Abhängigkeiten verwenden, werden Sie erfreut sein zu erfahren, dass diese Bibliotheken (zum Zeitpunkt des Schreibens fast 900) jetzt mit der MSVC kompiliert werden können v142-Toolset und können in Visual Studio 2019-Projekten verwendet werden.


Wenn Sie gerade erst mit Vcpkg beginnen, keine Sorge - Vcpkg ist ein Open-Source-Projekt von Microsoft, das den Erwerb und die Erstellung von Open-Source-C ++ - Bibliotheken unter Windows, Linux und Mac vereinfacht .


Da v142 binär kompatibel mit v141 und v140 ist, funktionieren alle bereits installierten Pakete auch in VS 2019 ohne Neukompilierung weiter. Wir empfehlen jedoch, neu zu kompilieren, wenn Sie können, damit Sie die neuen Compiler-Optimierungen genießen können, die wir zu v142 hinzugefügt haben!


Wenn Sie VS 2019 Preview neben einer älteren Version von VS (z. B. VS 2017) installiert haben, bevorzugt Vcpkg die stabile Version. Daher müssen Sie die Triplettvariable VCPKG_PLATFORM_TOOLSET von Vcpkg auf v142 setzen, um das neueste MSVC-Toolset zu verwenden.


Die Version des MSVC-Compilers ändert sich auf 19.2x (von 19.1x in MSVC v141).


Last but not least ändert der Compiler-Teil des MSVC v142-Toolset seine Version auf 19.20 - nur ein geringfügiges Versionsinkrement im Vergleich zu MSVC v141.


VS-Editor mit Quick Info, der zeigt, dass das Makro _MSC_VER gleich 1920 ist
Beachten Sie, dass Feature-Test-Makros im MSVC-Compiler und in der STL ab MSVC v141 unterstützt werden. Sie sollten die bevorzugte Option sein, damit Ihr Code mehrere MSVC-Versionen unterstützt.


Aufruf zum Handeln


Laden Sie Visual Studio 2019 noch heute herunter und teilen Sie uns Ihre Meinung mit. Unser Ziel ist es, Ihren Übergang zu VS 2019 so einfach wie möglich zu gestalten. Daher sind wir wie immer sehr an Ihrem Feedback interessiert. Sie erreichen uns über die folgenden Kommentare oder per E-Mail ( visualcpp@microsoft.com ).
Wenn Sie auf andere Probleme mit Visual Studio oder MSVC stoßen oder einen Vorschlag haben, teilen Sie uns dies bitte über Hilfe> Feedback senden> Problem melden / Vorschlag im Produkt oder über die Entwickler-Community mit . Sie finden uns auch auf Twitter unter @VisualC .

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


All Articles