【问题标题】:Sharing a C++ solution between Visual Studio 2010 and 11在 Visual Studio 2010 和 11 之间共享 C++ 解决方案
【发布时间】:2013-08-30 06:15:58
【问题描述】:

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

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

【问题讨论】:

  • 你应该使用 CMake 之类的东西,并且每个都为所需的 VS 版本生成自己的解决方案

标签: c++ visual-studio


【解决方案1】:

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

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

【讨论】:

  • 当您第一次在 VC++ 2012 中打开现有的 2010 项目时,它会“有帮助地”将平台工具集设置为 v110。这就是我在 Stackoverflow 上进行问答的方式——试图弄清楚 VC++ 2012 是如何破坏我的项目的,尽管它宣传了“无缝往返”。该错误消息仅告诉我指定正确的平台工具集,而没有说明这意味着什么或如何指定它。当然,Microsoft 文档毫无用处。但是在旧的 DuckDuckGo.com 上进行谷歌搜索并点击 Stackoverflow 的点击挽救了这一天。
  • 附言。谁知道有些往返有接缝?在任何情况下,平台工具集项目都会显示在 VS 2010 下,并且将其设置回 v100 效果很好。
  • 请注意,将其设置回 v100 需要安装 VS2010。
【解决方案2】:

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

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

【讨论】:

  • 据我了解,如果您正在运行自动更新,Microsoft 会修补 VC2010,使其与 VC2012 使用相同的格式。我现在在 VC++ 2010 中看到了“Platform Toolset”,但我不记得以前在那里看到过。
【解决方案3】:

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

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

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2018-11-03
      • 2015-03-06
      • 2010-11-16
      • 1970-01-01
      • 2018-02-09
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 2018-10-13
      相关资源
      最近更新 更多