坚持旧版本的工具集吗?使用Visual Studio 2015而不需要升级你的工具集

[原文发表地址]Stuck on an older toolset version? Move to Visual Studio 2015 without upgrading your toolset
[原文发表时间]2016/2/24

你正在使用老版本的Visual Studio开发C++工程吗?如果你避免VS 2015所有新特性的原因被隐藏,阅读:这篇文章可能会有好消息告诉你。

求助!我被困!

有许多理由为什么你可能想在你的日常工作中使用Visual Studio 2015. 仅举几例:

你可以下载VS 2015并立即升级你的项目。然而我们知道,对于某些工程完全升级不是一件简单的事。

  • 你的二进制文件被绑定了一个老版本的CRT,因为维护原因你不能升级?
  • 你的工程依赖于一个老版本的(非一致)语言构造,如果升级到最近的编译器它会遭到破坏?
  • 你正在依赖于一个需要特定版本VC工具集编译的第三方库文件?
  • 你的C++ APIs 正在被其他人使用,因此你被限定使用特定版本的C++编译器和CRT?

如果这些涵盖了你不使用VS 2015的原因,我将告诉你一个小秘密:你可以开始使用Visual Studio 2015而无需改变你的工具集版本(例如,当前的编译器和匹配的目标CRT)。

嗯,Visual Studio支持本地多目标和往返已不再是个秘密。并且我们肯定想要更多的篇幅介绍它。

本地多目标是指最新的IDE有能力使用老版本的Visual Studio(VS2008或向上)安装的工具集生成。

往返是指最新的IDE能够加载由以前版本IDE创建的项目(VS 2010工程或向上)而不需要更改任何项目资产,从而使其能够在以前版本的IDE中再次加载。

使用这些特性意味着你虽能利用最新的VS 2015 IDE特性,但不能使用C++编译器,库和生成工具 (例如,生成吞吐量) 的新特性。免费声明:有一些IDE特性依赖于最新的工具集,因此它们将与老版本的工具集不兼容:例如,在内存分析器中将会缺失类型信息,重构操作“转化为原始字符串直接量”将生成C++11-兼容的代码,从而使其不兼容VS 2012或更老的版本。

再说一遍? 本地重定向如何工作?

简单的比喻本地多目标的优势就是并排安装与你以前的老版本。然后用VS2015打开你现有的项目。

pic_taskbar

项目加载过程中,您将收到提示询问是否需要升级到最新的VS 2015 C++工具集。既然你想继续使用旧版本的编译器和库文件,你应该点击“取消”按钮拒绝 - 以后如果你想体验最新的C ++工具集你可以随时选择升级。

pic_upgrade

现在,当你使用VS 2015生成时,生成的二进制文件与你使用以前旧版本生成的二进制文件完全兼容,例如 VS2010。这是因为在底层,VS 2015将生成过程委托给相同的 C++ 编译器和使用你旧版本IDE 附带的库文件。这也是该对话框警告你的原因,如果单击取消,你应该保证安装了旧版本的VS。

一个新的困境:我应该让我的团队知道吗?关于项目返程

因为你选择不升级你的项目,VS2015不会对你的项目或解决方案进行任何更改。所以,你在你的日常工作中使用VS 2015很可能会成为你的小秘密 - 你团队的其他成员将继续使用旧版本,而没有任何你已经升级的线索。这是一个天大的秘密,因为你的同事不知道你的工作效率怎么会突然提高这么多!

所以,你真能保持这个秘密吗?一旦秘密泄露,办公室里的每个人都可能使用VS 2015 - 我们在Redmond的团队认为这是一件好事(...我们没有任何偏见)

PS:你会注意到,团队中的每个人第一次在VS2015中加载项目时都将看到相同的升级提示,如果你想避免一不小心,你的所有项目被一个办公室里热情的初级人员升级的话,你可以在传播消息之前根据相关报告“VS2013持续更新.suo文件信息”的指导完全阻止升级提示。(这也适用于VS 2015)

关于关于 Visual Studio 2008?

Visual Studio 2008 C++有自己专有的生成系统,称作VCBuild。随着VS 2010,C ++移到了MSBuild。因此,在VS 2015中生成VS 2008项目需要做更多的工作。最终的结果将与上面类似:使用VS 2015 IDE生成的二进制文件,与从VS 2008 IDE中创建的二进制文件完全兼容。

首先,除了安装VS 2015,你还需要在安装VS 2008的同一机器上安装VS 2010,这保证了某些针对VS 2008的MSBuild脚本被安装。(仅VS 2010 附加)。

其次,你需要升级你的VS 2008解决方案和项目。当得到以下升级提示,请查看显示信息。

pic_upgrade2008

现在是时候来创建VS 2008 .sln文件的备份了,因为它将会被VS 2015的 .sln文件所覆盖(如果你仅体验VS 2015,也许你甚至可能想要升级源代码控制下的备份副本而不是主副本)。当你单击“OK”按钮,向导将使用新的扩展名(.vcxproj)创建VC项目文件,与现有的.vcproj文件并存,所以只要你考虑了.sln文件,升级将对你现有的VS 2008项目没有任何影响。

升级完成后,你会得到一个升级日志报告。如果您的任何项目出现任何错误或警告,您应该仔细查看日志,并确保你认识提出的修改并跟进列出的所有行动项目。有关升级日志报表的详细信息请查看C ++项目升级指南

.既然项目升级完成,事实上你的项目指向VS 2015最新的工具集。要回到VS yao 2008你需要做最后一步:打开工程属性(右键单击解决方案资源管理器中的工程并选择属性),在常规属性页下,改变平台工具集为“Visual Studio 2008(v90)”替换“Visual Studio 2015(v140)“。

pic_projprops

修改之后,VS 2015生成的二进制文件将与VS 2008使用相同的编译器和库文件生成,就像在VS 2008 IDE中生成一样。

仍然被困?

尽管我们希望看到大家都使用最新的C++工具集,但我们知道,迁移代码和依赖关系花费时间且取决于你现在项目所处的生命周期,这会增加很多风险。但是,我们希望你知道我们对C++ 工程的本地多目标和往返的更新是有用的,并且记住这不应该拖你利用最新的Visual Studio IDE优势的后腿。

概括起来,在这里 - 下载Visual Studio 2015 。<<点击这里!

还有什么别的阻碍了你?我们想知道目前还有什么其它原因阻止你升级。填写VS 2015的升级调查 ,在下面添加评论或通过vcupgrade@microsoft.com直接联系我们,我们将进行更详细的交谈。