【发布时间】: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