针对 Visual Studio 2017、2019 和 2022 进行了更新
如果您仅使用 Visual Studio IDE 本身(而不是命令行上的 MSBuild)进行编译,则只需进行一些更改即可实际完成此工作,并且在两个平台上都具有或多或少的完整功能。
不幸的是,C++ 项目的规则与 C#/.NET 不同,并且需要一些手动干预,而 C# 项目在项目“升级”后相当自动地进行往返。这些更改将需要手动编辑项目文件。
当通过 IDE 运行构建时,更高版本的 Visual Studio 将覆盖工具版本。只需设置ToolsVersion
到 4.0,以满足 Visual Studio 2010 的要求,然后修复PlatformToolset
在公共属性组中获取 Visual Studio 2015 IDE 中正确的默认操作可能会做到这一点。
设置原因PlatformToolset
以便在更改构建属性时正确设置默认值,例如当您转到Debug
or Release
IDE 中的设置并选择<inherit from parent or project defaults>
默认情况下,您将获得 2015 版本,而不是 2010 版本。
C++ 项目文件与 Visual Studio 2010、2015、2017、2019 和 2022 共存的步骤:
- ToolsVersion 属性为 4.0
- 将 PlatformToolset 的通用默认值添加到 Visual Studio 2015 v140
- 将 PlatformToolset 的通用默认值添加到 Visual Studio 2017 的 v141
- 将 PlatformToolset 的通用默认值添加到 Visual Studio 2019 v142
- 将 PlatformToolset 的通用默认值添加到 Visual Studio 2022 v143
- 保存文件并重新加载项目
1.工具版本到4.0:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
...
仅通过改变14.0
to 4.0
in Project
标记为ToolsVersion
它成为了
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
...
2.将PlatformToolset的通用默认值添加到仅Visual Studio 2015识别的v140:
<PropertyGroup Label="Globals">
<ProjectGuid>{12345678-9876-ABCD-DCCA-765FE987AA1F}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>myProject</RootNamespace>
<TargetPlatformVersion>8.1</TargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
通过仅添加新的PlatformToolset
线到底部PropertyGroup
它成为了:
<PropertyGroup Label="Globals">
<ProjectGuid>{12345678-9876-ABCD-DCCA-765FE987AA1F}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>myProject</RootNamespace>
<TargetPlatformVersion>8.1</TargetPlatformVersion>
<PlatformToolset Condition="'$(VisualStudioVersion)' == '14.0'">v140</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)' == '16.0'">v142</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)' == '17.0'">v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
还要在 Visual Studio 2017 中加载,带有工具集的一行v141
如上所示,还需要继续在所有三个之间无缝交叉加载项目。
在 Visual Studio 2019 中,带有工具集的一行v142
如上所示,还需要继续在所有四个之间无缝交叉加载项目。