15

我和我的伙伴都通过颠覆共享一个 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

4 回答 4

30

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

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

工具集选项

于 2012-04-23T10:22:50.920 回答
3

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

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

于 2012-04-20T12:03:08.113 回答
0

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

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

如果 SVN 支持补丁,或者如果你愿意在外部运行被子(或者如果你切换到 mercurial,你可以使用 MQ 扩展),你可以创建从 2010 到 2011 的补丁文件并删除升级补丁(s) 同步前。

于 2012-07-30T18:45:58.570 回答
0

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

于 2012-11-20T12:39:54.010 回答