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

时间:2012-04-20 11:56:31

标签: c++ visual-studio

我和我的伙伴都通过颠覆共享c ++解决方案。

他正在使用Visual Studio 11,我正在使用Visual Studio 2010。

他第一次提交并更新后,我收到以下错误:

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"

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

4 个答案:

答案 0 :(得分:30)

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

如果从Visual Studio 11开始创建新项目,则默认使用Platform Toolset v110,但是如果可以将其更改为Visual Studio 2010使用的v100。

Toolset option

答案 1 :(得分:3)

保存在Visual Studio 11中的

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

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

答案 2 :(得分:0)

讨论稍晚,但由于您正在使用源代码管理,您可以从存储库中删除项目和解决方案文件,只需共享源代码。显然,如果您将新模块等添加到项目中,则必须在其他解决方案中手动添加它们,但至少您不必担心这种不兼容性。如果您想了解它,可以使用编译器和链接器开关从命令行构建应用程序,这些开关在修订版之间往往更加兼容。最后,您可以使用另一个构建工具(除了MSBuild),它在工作室版本之间保持兼容。

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

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

答案 3 :(得分:0)

Drake的解决方案对我不起作用,因为解决方案中所有项目的属性已经正确设置为v100。但是,确实有效的修复是清理构建并删除所有其他非源文件或项目文件的文件。我认为它可能正在删除修复它的文件projname.vcxproj.user,因为工具链首选项可能会以某种方式覆盖用户首选项。