是否可以拥有向后兼容 vs2013 和 vs2017 的 vs 项目?

Posted

技术标签:

【中文标题】是否可以拥有向后兼容 vs2013 和 vs2017 的 vs 项目?【英文标题】:Is it possible to have vs project that is backwards compatible with vs2013 and vs2017? 【发布时间】:2017-10-25 23:27:26 【问题描述】:

所以我的团队现在使用 VS2013,而我最近刚刚证明我可以使用 VS2017 运行我们的项目。所以我想知道是否有一种方法可以将我的更改推送到我们的主分支,而我的团队不会注意到任何事情。这意味着如果他们打开他们的 VS2013,他们就可以很好地运行项目,当我使用 VS2017 运行它时,它也可以正常运行。 (它现在不会这样做,因为 3rdParty 库是用 msvc 1800 编译的,而我的项目在 msvc 1900 上运行它会给我链接错误)

我可以利用 MSBuild 条件来执行此操作吗?

<Choose>  
    <When Condition=" '$(Configuration)'=='Debug' ">  
        <PropertyGroup>  
            <DebugSymbols>true</DebugSymbols>  
            <DebugType>full</DebugType>  
            <Optimize>false</Optimize>  
            <OutputPath>.\bin\Debug\</OutputPath>  
            <DefineConstants>DEBUG;TRACE</DefineConstants>  
        </PropertyGroup>  
        <ItemGroup>  
            <Compile Include="UnitTesting\*.cs" />  
            <Reference Include="NUnit.dll" />  
        </ItemGroup>  
    </When>  
    <When Condition=" '$(Configuration)'=='retail' ">  
        <PropertyGroup>  
            <DebugSymbols>false</DebugSymbols>  
            <Optimize>true</Optimize>  
            <OutputPath>.\bin\Release\</OutputPath>  
            <DefineConstants>TRACE</DefineConstants>  
        </PropertyGroup>  
    </When>  
</Choose>  

【问题讨论】:

您可以尝试使用平台工具集“Visual Studio 2013(v120)”在 Visual Studio 2017 中构建您的项目,检查它是否构建良好。 ***.com/questions/19575747/… 您需要澄清一些事情:当您使用 VS2017 打开项目时,您想使用 VS2017 或 VS2013 附带的编译器/链接器来构建它?你想用 MsBuild 条件做什么?您是否有一个应该有条件地构建/使用的功能示例? 【参考方案1】:

您应该可以使用 VS17 和您的团队 VS13。如果您在 VS17 中打开项目,请不要升级您的 Windows SDK 版本和平台工具集和团队,您可以照常构建,但您不能使用新的 C++ 功能,因为旧的 VS13 编译器无法编译它们

【讨论】:

以上是关于是否可以拥有向后兼容 vs2013 和 vs2017 的 vs 项目?的主要内容,如果未能解决你的问题,请参考以下文章

.lib 和 .dll 向后兼容性

Visual Studio 2017 RC 是不是向后兼容 Visual Studio 2013 解决方案?

WIN10安装VS2013出现兼容性问题解决

SemVer 中 MINOR vs PATCH 规则的原因

关于VS2013中代码注释热键的问题

如何在VS 2010中使用 VS2013的解决方案(转)