Visual Studio 2017中并排次要版本MSVC工具集

我们对Visual Studio 2017的改进比以往任何时候都要频繁。自3月份首次发布以来,我们已经发布了VS2017的四个主要更新,目前正在预览第五个更新,即VS2017版本15.5。

null

VS2017中的MSVC工具集是作为VS2015编译器工具集的次要版本更新构建的。这个小版本表明 VS2017 MSVC工具集与VS2015 MSVC工具集二进制兼容 ,使VS2015用户更容易升级。尽管VS2017中的MSVC编译器工具集提供了许多新特性和 一致性改进 它是一个次要版本,兼容的更新版本,从VS2015的14.00到VS2017的14.10。

到目前为止,我们已经在VS2017中对MSVC工具集进行了两次重大更新:一次是VS2017的第一个版本,另一次是更新版本15.3。我们正在对VS2017版本15.5进行另一个重要更新。15.1、15.2和15.4中的MSVC工具集是增量的、bug修复级别的更新。以下是MSVC工具集版本和编译器版本,以供参考( _MSC_VER )在VS2015到VS2017的每个版本中(请注意,由于历史原因,MSVC编译器版本比VisualStudio中显示的MSVC工具集版本高5。)

Visual Studio版本 MSVC工具集版本 MSVC编译器版本( _MSC_VER )
VS2015和更新1、2和3 VS中的v140;版本14.00 1900
VS2017,版本15.1和15.2 v141在VS;版本14.10 1910
VS2017,版本15.3和15.4 v141在VS;版本14.11 1911
VS2017,版本15.5 v141在VS;版本14.12 1912

次要版本更新设计为与以前版本兼容的源代码和二进制文件。我们测试所有源代码更改的兼容性和可用性 记录所有C++一致性更改和任何必需的源代码更改 每次发布。我们记录的源代码更改几乎总是前后兼容的,这意味着您可以使用新的或旧的编译器编译代码。

有时,尽管尽了最大努力,添加新功能可能会引入影响代码的bug。如果您的源代码库确实遇到了bug,或者您需要额外的时间在代码库中应用源代码修复,那么在您更新代码或我们修复bug时,您可能需要一种方法返回到上一个VS2017更新的工具集。如果VS2017版本15.5预览版4(14.12)的MSVC编译器遇到问题,现在可以安装以前的次要版本MSVC工具集(14.11)。

谁应该使用此功能?

对于那些发现源代码或MSVC中有一个bug的开发人员来说,这个特性是一个“逃生舱门”,它不容易解决或及时修复。如果源代码中存在一致性问题,最好的选择是 应用适当的修复程序使代码符合要求 如果可能的话(有时你的代码中有太多需要修改的地方,无法立即修复)。如果你认为MSVC中有一个bug,最好和我们谈谈,这样我们就可以修复这个bug或者提供一个解决方法。

如果我们不能足够快地修复错误,并且您无法在源代码中应用变通方法,那么这个特性在这种不太可能的情况下非常有用。它不是一个通用功能。如果遇到问题,请首先与我们联系(请参阅 联系我们! 因此我们可以尝试直接解决您的问题。

我还有什么选择?

如果您怀疑您需要保留特定的VS2017更新,请说明您的产品在VS2017更新的第二天就可以发货,您可以考虑保留构建产品当前版本的VS2017版本的脱机安装。保留脱机安装将允许您在更新后安装旧版本的VS2017。你可以在这个页面上找到更多信息, 创建Visual Studio 2017的脱机安装 .

可能不支持旧版本的Visual Studio和MSVC工具集

您应该注意到,visualstudio和MSVC工具集的旧版本遵循标准 Visual Studio服务指南 . 这些指南特别建议只支持RTW版本和最新版本。 在使用并列次要版本的MSVC工具集或脱机安装较旧的VS2017版本之前,请自己查看VS服务指南。

如何并行安装MSVC工具集

如果MSVC团队建议使用并行工具集作为解决编译器bug或源代码问题的最佳选择,那么如何安装它呢?它实际上是VS2017安装程序中的一个选项。只需选择安装程序屏幕顶部的“单个组件”选项卡,然后向下滚动到“编译器、构建工具和运行时”部分。 14.11工具集包含在VS2017版本15.5 update 4安装程序中。

Individual components in VS setup 选择“VC++2017版本15.4 v14.11工具集”也将为VC++2017版本15.5选择当前的MSVC工具集。默认情况下,项目将使用当前的MSVC工具集–您必须编辑项目文件( .vcxproj )使用旧的工具集。

在VS中使用并行次要版本MSVC工具集

并排次要版本MSVC工具集不会出现在项目配置属性的“平台工具集”选项中。要启用它们,您需要编辑 .vcxproj 为您的项目创建文件。每个并排次要版本MSVC工具集都包含一个 .props 可以包含在项目的 .vcxproj 文件。

在开始之前,应该添加 -Bv 编译器选项作为编译器命令行上的附加选项。这将在生成输出框中显示详细的编译器版本信息。只需输入“ -Bv 在项目属性> C/C++ >命令行编辑框中。

Adding -Bv to the Additonal Options in Project Properties

现在,打开门 VCAuxiliaryBuild14.11 安装VS2017版本15.5预览版4的文件夹中的目录。例如,使用默认安装位置,您可以在以下位置找到它: C:Program Files (x86)Microsoft Visual StudioPreviewEnterpriseVCAuxiliaryBuild14.11 . 你应该在这个文件夹中看到三个文件。你需要复制其中一个, Microsoft.VCToolsVersion.14.11.props ,放入解决方案目录。

Side-by-Side Toolset Directory Listing

接下来,右键单击解决方案并选择“在文件资源管理器中打开文件夹”,打开包含解决方案的文件夹。

Open Folder from Solution Explorer

复制 Microsoft.VCToolsVersion.14.11.props 将VS2017版本15.5 Preview 4文件夹中的文件保存到解决方案目录中。该文件应与项目的解决方案文件位于同一目录中,例如。, Project6.sln .

Copy file into Solution directory

现在通过右键单击项目并选择“unload project”卸载项目。

Unload Project in Soution Explorer

卸载项目后,可以通过单击项目并选择“编辑[ProjectName]”来编辑项目。

Edit Project File

找到写着

[xml文件][/xml]

直接添加行 在上面 导入 Microsoft.VCToolsVersion.14.11.props 您刚刚复制到解决方案目录中的:

[xml文件][/xml]

现在,保存文件,然后右键单击项目名称并选择“reloadproject”。

Reload Project in Solution Explorer

如果尚未保存该文件,系统将提示您关闭打开的.vcxproj文件。选择“是”关闭文件。

现在,当您重建解决方案时,您将看到您正在使用14.11msvc编译器工具集。

Rebuild Solution

从命令行使用并行次要版本MSVC工具集

如果需要从命令行使用并行次要版本MSVC工具集,只需自定义开发人员命令提示符。与VS2017版本15.5 Preview 4一起安装的命令提示位于 VCAuxiliaryBuild VS install目录的子目录。例如,对于默认安装路径,它们位于 C:Program Files (x86)Microsoft Visual StudioPreviewEnterpriseVCAuxiliaryBuild 目录。

在该文件夹中,您将找到四个开发人员命令提示(名为 vcvars*.bat ). 选择任意一个并创建一个要编辑的副本。这些文件的内容非常简单:它们都只是调用 vcvarsall.bat 具有适当的结构参数。我们也会这样做,但是添加一个新参数 vcvarsall.bat 要为v14.11工具集设置环境,请执行以下操作: -vcvars_ver=14.11 .

下面是一个命令示例,用于为v14.11×86托管的x64目标工具设置环境。运行命令 cl -Bv 显示为工具的正确版本设置了环境。

Side-by-side toolset command prompt

联系我们!

通常在我们的博客文章的最后,我们鼓励你尝试一下我们讨论过的功能。在这种情况下,我们做的恰恰相反。如果您认为在VS2017版本15.5预览版4中遇到无法在源代码中解决的MSVC工具集问题,请与我们联系。我们希望了解您的问题,并尝试帮助您解决它,而不必返回到旧的MSVC工具集。但是,如果您确实需要将旧的MSVC工具集与当前的工具集并排安装的选项,您可以使用它。

一如既往,我们可以通过以下评论和电子邮件联系到您( visualcpp@microsoft.com )你可以通过 帮助>报告产品中的问题 ,或通过 开发者社区 . 你也可以在Twitter上找到我们( @视觉 )还有Facebook( msftvisualcpp软件 ).

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