Cor*_*oss 10 configuration compatibility cross-platform visual-studio-2010 visual-studio
我正在开源一些我之前创建的旧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未列出该值,而是我有两个选择:
它们分别对应VS2010和VS2008.如果我将值更改为v100并重建我没有错误,我的程序在我的Visual Studio 2010环境中运行正常.
当我在Visual Studio 2012中打开项目备份时,如果告诉我我有一个旧的项目文件并询问我是否要升级,我会说是,它会升级.我重建并运行以确保一切仍然有效.当我打开VS2012中的配置选项时,平台工具集被设置回`Visual Studio 2012(v110),但点击下拉输入,列出了几个选项:
这让我有几个问题.我将把它们全部构成.尽可能多地获取信息会很好,但只有其中一个的好答案可能会解决我的问题.
如果我没有使用特定于较新版本的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之外还有其他选项可以增加与其他开发环境的兼容性吗?
这是一个有点棘手的情况.这里的一个潜在问题是VS2010和VS2012使用MSBuild来构建C++项目,但VS2008将其迁移到VCBuild.您可以通过比较项目文件来查看.VS2010/VS2012使用.vcxproj,而VS2008使用.vcproj.
如果我没有使用特定于较新版本的Visual Studio的功能,是否可以设置一个解决方案,可以在尽可能多的版本(即2008年,2010年或2012年)中打开和运行而无需修改?如果是这样,怎么样?
为了获得最大的兼容性,您希望定位最小公分母(在本例中为vc90).请注意,执行升级时,解决方案文件和项目文件将升级到最新版本,这可能会破坏与旧版Visual Studio的兼容性.
如果我从Visual Studio 2012中将Platform Toolset设置为v90(VS2008),并且它能够构建和运行,这是否意味着它将为VS2012,VS2010和VS2008的用户构建和运行?
不是真的,因为上面提到的.vcxproj/.vcproj冲突.
例如,我目前有一套.vcxproj文件和一个专为VS2010设计的解决方案.我使用VS2012作为我的IDE,所以当我在VS2012中打开VS2010解决方案时,我选择不升级它,只需按原样打开它.就项目文件而言,VS2012及更高版本应向后兼容VS2010.
为了在开发环境中实现最大兼容性,我的建议是使用VS2010的解决方案作为基准,目标是v100.开发人员可以使用任何比这更新的版本,它们应该优雅地协同工作.