【问题标题】:How to choose Visual Studio solution Platform Toolset for maximum compatibility如何选择 Visual Studio 解决方案平台工具集以获得最大兼容性
【发布时间】:2013-08-08 11:05:14
【问题描述】:

背景

我正在开源一些我不久前创建的旧 Visual Studio 应用程序。我使用新的 VS2012 环境为他们创建了新的解决方案,并将项目设置为 git 存储库。我在 Visual Studio 2012 中一切正常,无需更改源代码,我需要做的就是确保在新项目配置中链接了正确的库。

我想将这些项目配置为具有最大兼容性,以便其他人从 Github 下载该项目。在这台机器上,我安装了 VS2010 和最新的 VS2012 版本。在 VS2012 中的两个项目都正常运行后,我尝试在 VS2010 中打开它们。

当我尝试构建时,我遇到了一个错误:

Specified platform toolset (v110) is not installed or invalid.
Please make sure that a supported PlatformToolset value is selected.    
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets  518

我尝试了什么

所以我打开了项目的属性,转到Configuration Options --> General平台工具集确实设置为Visual Studio 2012 (v110)。此输入是一个下拉框,未列出 v110 值,而是有两个选择:

  • v100
  • v90

这些分别对应VS2010和VS2008。如果我将值更改为 v100 并重新构建,我不会收到任何错误,并且我的程序在我的 Visual Studio 2010 环境中运行良好。

当我在 Visual Studio 2012 中打开项目备份时,如果告诉我我有一个旧项目文件并询问我是否要升级,我说是并且它会升级。我重建并运行以确保一切正常。当我在 VS2012 中打开配置选项时,Platform Toolset 设置回 `Visual Studio 2012 (v110) 但单击下拉输入会列出更多选项:

  • Visual Studio 2012 (v110)
  • v110_wp80
  • Visual Studio 2012 - Windows XP (v110_xp)
  • Visual Studio 2010 (v100)
  • Visual Studio 2008 (v90)
  • ‹从父级或项目默认值继承›

我的问题

这让我想到了几个问题。我要摆出他们所有的姿势。尽可能多地获取信息会很好,但仅对其中一个问题的好答案可能会解决我的问题。

  • 如果我没有使用特定于较新版本 Visual Studio 的功能,是否可以设置一个解决方案,无需修改即可在尽可能多的版本中打开和运行(即 2008、2010 或 2012) ?如果有,怎么做?

  • 如果我在 Visual Studio 2012 中将 Platform Toolset 设置为 v90 (VS2008),并且它能够构建和运行,这是否意味着它将为使用 VS2012、VS2010 的用户构建和运行,和VS2008?

  • <inherit for parent or project defaults> 选项到底有什么作用?项目默认设置是什么?这可以用来告诉 Visual Studio 尝试使用任何已安装的 Platform Toolset 可以工作吗?

  • 除了 Visual Studio 中的 Platform Toolset 之外,我是否可以设置其他选项来提高与其他开发环境的兼容性?

【问题讨论】:

    标签: visual-studio-2010 visual-studio configuration cross-platform compatibility


    【解决方案1】:

    这是一个有点棘手的情况。这里的潜在问题之一是 VS2010 和 VS2012 使用 MSBuild 来构建 C++ 项目,但 VS2008 将其外包给了 VCBuild。您可以通过比较项目文件来看到这一点。 VS2010/VS2012使用.vcxproj,VS2008使用.vcproj。

    如果我没有使用特定于较新版本 Visual Studio 的功能, 是否可以设置一个可以打开和运行的解决方案 在尽可能多的版本中不进行修改(即 2008、2010、 或 2012 年)?如果有,怎么做?

    为了获得最大的兼容性,您希望以最小的公分母为目标(即本例中的 vc90)。请注意,当您进行升级时,解决方案文件和项目文件会升级到最新版本,这可能会破坏与旧版本 Visual Studio 的兼容性。

    如果我在 Visual 中将 Platform Toolset 设置为 v90 (VS2008) Studio 2012,并且它能够构建和运行,这是否意味着它 将为使用 VS2012、VS2010 和 VS2008 的用户构建和运行?

    并非如此,由于上述 .vcxproj / .vcproj 冲突。

    例如,我目前有一组 .vcxproj 文件和一个专为 VS2010 设计的解决方案。我使用 VS2012 作为我的 IDE,所以当我在 VS2012 中打开 VS2010 解决方案时,我选择不升级它并按原样打开它。就项目文件而言,VS2012 及更高版本应向后兼容回 VS2010。

    为了在开发环境中实现最大的兼容性,我的建议是使用 VS2010 的解决方案作为基准,以 v100 为目标。开发人员可以使用任何比此更新的版本,并且它们应该可以优雅地协同工作。

    【讨论】:

    • 感谢您的详细回答。这至少让我知道我应该做什么。
    猜你喜欢
    • 1970-01-01
    • 2015-10-10
    • 2017-03-20
    • 2018-07-04
    • 1970-01-01
    • 2020-01-14
    • 2012-06-26
    • 1970-01-01
    相关资源
    最近更新 更多