
Visual Studio 2019突破了个人和团队生产力的界限。 我们希望您会发现这些新功能引人注目,并尽快开始升级到Visual Studio 2019。
在考虑此升级时,请放心,Visual Studio 2019使得从Visual Studio的早期版本中移出代码库特别容易。 这篇文章捕捉了为什么您可以轻松升级到Visual Studio 2019的原因。
并行Visual Studio安装
您可以在已经安装了早期版本的计算机上安装Visual Studio的最新版本,并在没有干扰的情况下继续并行使用这两个版本。 这是尝试Visual Studio 2019或将其用于某些项目的好方法。 Visual Studio安装程序将允许您从中央UI管理Visual Studio 2017和2019的安装。

Visual Studio 2019 IDE中的MSVC v140(VS 2015.3)和MSVC v141(VS 2017)工具集
即使您尚未准备好将项目移至最新工具集(MSVC v142),您仍可以在Visual Studio 2019 IDE中加载项目并继续使用当前的旧工具集。
将您现有的C ++项目加载到IDE中不会升级/更改您的项目文件。 这样,您的项目也可以加载到IDE的早期版本中,以防万一您需要返回,或者您的队友尚未升级到VS 2019(此功能也称为项目往返 )。
您盒中较旧的VS安装中的工具集在最新的IDE中作为平台工具集可见。 而且如果您刚开始只在计算机上安装VS 2019,则可以通过自定义C ++桌面工作负载(其中单个组件选项卡列出所有选项)直接从Visual Studio安装程序中获取这些较旧的工具集,这非常容易。

新的v142工具集现已发布
在Visual Studio 2019浪潮中(预览,其一般可用性和将来的更新),我们计划继续通过以下方式发展我们的C ++编译器和库
- 新的C ++ 20功能
- 构建速度更快,并且
- 更好的代码生成优化。
MSVC v142工具集现已推出,它已经为您带来了许多迁移的诱因 。
最新的MSVC v142工具集中的VC Runtime与v140和v141二进制兼容
我们大声而清晰地听到,促成MSVC v141今天迅速采用的主要原因是它与MSVC v140的二进制兼容性。 这样,您便可以按照自己的进度将自己的代码迁移到v141工具集中,而不必等待任何第三方库依赖项的迁移。
我们希望保持发展势头,并确保您也拥有类似的成功使用MSVC v142的经验。 这就是为什么我们今天宣布,我们的团队致力于为具有MSVC v141和v140的MSVC v142提供二进制兼容性 。
这意味着,如果您使用v142工具集编译所有代码,但仍具有一个或多个使用v140或v141工具集构建的库,则将所有代码链接在一起(使用最新的链接器)将可以正常工作。 为了实现这一点,VC Runtime在VS 2019中不会更改其主要版本,并且仍与以前的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
当您混合使用不同支持版本的MSVC工具集构建的二进制文件时,将随应用程序重新分发的VCRedist有版本要求。 具体来说,VCRedist不能早于用于构建应用程序的任何工具集版本。
无论使用什么工具集,Vcpkg上的数百个C ++库都可用
如果您今天将Vcpkg与VS 2015或VS 2017一起用于一个或多个开源依赖项,您将很高兴地了解到,现在可以使用MSVC编译这些库(在撰写本文时接近900个) v142工具集,可在Visual Studio 2019项目中使用。
如果您刚刚开始使用Vcpkg,请不要担心-Vcpkg是Microsoft的一个开源项目,旨在帮助简化Windows,Linux和Mac上开源C ++库的获取和构建 。
由于v142与v141和v140二进制兼容,因此您已经安装的所有软件包也将继续在VS 2019中运行,而无需重新编译; 但是,我们建议您在可能的情况下进行重新编译,以便可以享受我们添加到v142中的新编译器优化!
如果您将VS 2019 Preview与旧版本的VS(例如VS 2017)并排安装,则Vcpkg将更喜欢稳定版本,因此您需要将Vcpkg的三元组变量VCPKG_PLATFORM_TOOLSET设置为v142才能使用最新的MSVC工具集。
MSVC编译器版本更改为19.2x(从MSVC v141中的19.1x)
最后但并非最不重要的一点是,MSVC v142工具集的编译器部分将其版本更改为19.20-与MSVC v141相比仅是次要的版本增量。

请注意,从MSVC v141开始,MSVC编译器和STL支持功能测试宏,并且它们应该是使代码支持多个MSVC版本的首选。
呼吁采取行动
请立即下载Visual Studio 2019 ,让我们知道您的想法。 我们的目标是让您尽可能轻松地过渡到VS 2019,因此,一如既往,我们对您的反馈非常感兴趣。 可以通过下面的评论或电子邮件( visualcpp@microsoft.com )与我们联系。
如果您在Visual Studio或MSVC上遇到其他问题或有建议,请通过帮助>发送反馈>报告问题/在产品中提供建议或通过Developer Community告诉我们。 您也可以在Twitter上@VisualC找到我们。