C++二进制兼容性和无痛苦升级到Visual Studio 2019

Visual Studio 2019突破了 个人 团队生产力 . 我们希望您会发现这些新功能非常引人注目,并很快开始升级到VisualStudio2019。

null

当您考虑进行此升级时,请放心,VisualStudio2019使您的代码库从VisualStudio的早期版本移动起来非常容易。这篇文章抓住了为什么升级到VisualStudio2019将是无痛的原因。

并行Visual Studio安装

您可以在已安装早期版本的计算机上安装最新版本的Visual Studio,并继续并行使用这两个版本,而不会产生任何干扰。这是一种尝试VisualStudio2019或将其用于某些项目的好方法。Visual Studio安装程序将允许您从中央UI管理Visual Studio 2017和2019的安装。

Visual Studio Installer image showing VS 2017 and VS 2019 installed side-by-side

Visual Studio 2019 IDE中的MSVC v140(VS 2015.3)和MSVC v141(VS 2017)工具集

即使您还没有准备好将项目移动到最新的工具集(MSVC v142),您仍然可以在visualstudio2019ide中加载项目并继续使用当前较旧的工具集。

将现有C++项目加载到IDE中,不会升级/更改项目文件。这样,您的项目也会加载到IDE的早期版本中,以防您需要返回或您的队友尚未升级到VS2019(此功能也称为 项目往返 ).

在最新的IDE中,来自老版本VS安装的工具集作为平台工具集可见。而且如果您在您的计算机上安装了仅安装VS 2019的新设备,那么通过定制C++桌面工作负载(用单个组件选项卡列出所有选项),很容易从VisualStudio安装程序中直接获得这些旧的工具集。

图片[2]-C++二进制兼容性和无痛苦升级到Visual Studio 2019-yiteyi-C++库

新的v142工具集现在可用

在VisualStudio 2019波形(预览、其一般可用性和未来更新)中,我们计划继续使用C++编译器和库来进行开发。

  • 新C++ 20特性,
  • 更快的构建吞吐量,以及
  • 更好的代码优化。

MSVC v142工具集现在可用,它已经带来了 几个 激励措施 供你迁移。

最新MSVC v142工具集中的VC运行时与v140和v141二进制兼容

我们清楚地听到,促使MSVCV141今天被迅速采用的一个主要原因是它与MSVCV140的二进制兼容性。这允许您以自己的速度将自己的代码迁移到v141工具集,而无需等待任何第三方库依赖项先迁移。

我们希望继续保持势头,并确保您有一个类似的成功采用经验与MSVC v142太。这就是为什么我们今天宣布我们的团队致力于 提供MSVC v142与MSVC v141和v140的二进制兼容性 .

这意味着,如果您使用v142工具集编译所有代码,但仍然有一个或多个使用v140或v141工具集构建的库,那么将所有库链接在一起(使用最新的链接器)将按预期工作。为了实现这一点,VC运行时不会在VS2019中更改其主要版本,并与以前的VC运行时版本保持向后兼容。

C:source
eposTimerAppDebug>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

当您混合使用MSVC工具集的不同支持版本生成的二进制文件时,您的应用程序会重新分发VCRedist的版本要求。具体来说,vcredit不能比用于构建应用程序的任何工具集版本都旧。

不管您使用的工具集如何,VCKG上的数百个C++库都可用。

如果您现在将Vcpkg与VS 2015或VS 2017一起用于一个或多个开源依赖项,您将很高兴地了解到这些库(在撰写本文时接近900个)现在可以使用MSVC v142工具集进行编译,并且可以在Visual Studio 2019项目中使用。

如果您刚刚开始使用Vcpkg,不用担心–Vcpkg是微软提供的一个开源项目 在Windows、Linux和MAC上简化开源C++库的获取和构建 .

因为v142与v141和v140是二进制兼容的,所以您已经安装的所有软件包也将继续在vs2019中工作,而无需重新编译;但是,我们建议您在可以的时候重新编译,这样您就可以享受我们添加到v142中的新编译器优化!

如果您将VS 2019 Preview与旧版本的VS(例如VS 2017)并排安装,Vcpkg将更喜欢稳定版本,因此您需要设置Vcpkg的triplet变量 VCPKG平台工具集 到v142使用最新的MSVC工具集。

MSVC编译器版本更改为19.2x(从MSVC v141中的19.1x)

最后但并非最不重要的一点是,MSVC v142工具集的编译器部分将其版本更改为19.20–与MSVC v141相比,只增加了一小部分版本。

VS editor with Quick Info showing that _MSC_VER macro equals 1920 请注意,MSVC编译器和STL从MSVC v141开始支持功能测试宏,它们应该是使代码支持多个MSVC版本的首选选项。

行动号召

拜托 立即下载Visual Studio 2019 告诉我们你的想法。我们的目标是让您尽可能轻松地过渡到VS 2019,因此,一如既往,我们对您的反馈非常感兴趣。我们可以通过下面的评论或电子邮件联系我们( visualcpp@microsoft.com ).如果您在Visual Studio或MSVC中遇到其他问题或有建议,请通过“帮助”>“发送反馈”>“报告问题/在产品中提供建议”或通过 开发者社区 . 你也可以在Twitter上找到我们 @视觉 [喘息声]

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享