在Visual Studio 2010和11之间共享C++解决方案

问题描述:

我和我的合作伙伴都通过颠覆共享C++解决方案。在Visual Studio 2010和11之间共享C++解决方案

他使用Visual Studio 11和我使用Visual Studio 2010中

第一次后,他COMMITED和我更新,我得到以下错误:

Error 31 error MSB8008: Specified platform toolset (v110) is not installed or invalid. Please make sure that a supported PlatformToolset value is selected.

而且,头文件我得到#include <stdio.h>以下错误:

error: cannot open source file "stdio.h"

我猜测这是一个兼容性问题。我们如何解决这个问题?

+0

你应该使用类似CMake的东西,并且每个都生成所需的VS版本的自己的解决方案 – relaxxx 2012-04-20 12:24:00

在Visual Studio 11中有一个属性选项,允许您指定平台工具集。

平台工具套件V110默认使用,如果你创建的Visual Studio 11开始一个新的项目,但如果可以把它改成V100是由Visual Studio所使用的2010年

Toolset option

+0

当您在VC++ 2012中打开一个现有的2010项目的第一次,它会“很有帮助”设置平台的工具包,V110。这就是我得到了这个Q和A#2 - “无缝往返”试图找出VC++ 2012如何打碎了我的项目,尽管一刊登广告该错误消息仅告诉我指定正确的平台工具集,而不给出任何关于这是什么意思或如何指定它的指示。当然,微软文档是无用的。但是在老的DuckDuckGo.com上用google搜索并点击Stackoverflow命中节省了一天的时间。 – 2012-09-29 05:30:07

+0

P.s.谁知道一些往返旅行有接缝?无论如何,平台工具集项目显示在VS 2010下,并将其设置回v100工作得很好。 – 2012-09-29 05:33:49

+2

请注意,将其设置回v100需要安装VS2010。 – JohnW 2013-07-12 19:37:20

保存在Visual Studio 11中的.sln和.vcxproj文件不与VS2010向后兼容。即使它们是兼容的,最终你会跨越一个可在VS11中编译但不在VS10中的代码。

最好的(也许是唯一的)方法是同意使用完全相同的开发环境。

+1

据我所知,如果您有自动更新运行,Microsoft修补VC2010,以便它和VC2012使用相同的格式。我现在在VC++ 2010中看到了“Platform Toolset”,我不记得在那里看到过它。 – 2012-09-29 05:35:59

一但是由于您使用的是源代码管理,因此您可以从存储库中删除项目和解决方案文件,然后共享源代码。很明显,如果你在一个项目中添加新模块等,你必须手动将它们添加到另一个解决方案中,但至少你不必担心这种不兼容性。如果您想深入了解,可以使用编译器和链接器开关从命令行构建应用程序,这些开关通常在修订版之间更加兼容。最后,你可以使用另一个构建工具(除了MSBuild),这个工具在各个演播室版本之间保持兼容。

如果您决定删除解决方案和项目文件,需要考虑的一件事是将原始YourApp.sln的副本保存为YourApp.sln.2010。然后,您将拥有一些可以从未来的解决方案中获利的项目,但项目和解决方案的更新都需要在VS 2010中完成,然后将该文件复制到.2010版本并手动维护。

如果SVN支持补丁,或者如果您愿意在外部运行quilt(或者如果切换到mercurial,您可以使用MQ扩展),则可以创建补丁文件以将其从2010转换为2011,在同步之前删除升级补丁。

由于解决方案中所有项目的属性已正确设置为v100,因此Drake的解决方案对我无效。但是,确实有效的修复方法是清理构建并删除非源文件或项目文件的所有其他文件。我认为它可能会删除修复它的文件projname.vcxproj.user,因为工具链首选项可能在用户首选项中被重写。