最近新装了VisualStudio2022,有一些VS2015老的项目需要运行,但不想再安装VS2015,就想能否直接在VS2022编译运行,研究一下发现可行,记录一下。
1. 直接升级VS2015项目到2022使用windows sdk 10.0
发现老代码里的一些语法已经不支持,改动会很大,此路不通。
2. 保持VS2015项目不变
打开后,项目名称后面会带有(Visual Studio 2015)。此时编译会报错。
2.1 安装VS2015工具集,打开Visual Studio Installer,点击修改按钮
在‘单个组件’里搜索MSVC v140,安装2015的生成工具集,安装后右边详情里可以找到,如下图所示。
2.2 安装2015依赖的windows sdk8.1,由于Installer里找不到此版本了,需要单独下载安装。
下载地址: https://go.microsoft.com/fwlink/p/?LinkId=323507
安装完成后,可以编译运行2015的项目了。
3. 添加VC++默认包含目录
3.1 VS2022项目修改安装目录里的Microsoft.Cpp.MSVC.Toolset.Common.props,如
C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Microsoft\VC\v170\Microsoft.Cpp.MSVC.Toolset.Common.props,找到IncludePath属性,在已有值后直接加你需要的目录路径,多个目录用分号隔开。修改前最好备份下这个文件。
3.2 前面修改的配置只对VS2022项目有作用,但对VS2015项目无效。网上找了下发现之前的VisualStudio是修改Microsoft.Cpp.Win32.user.props里的<PropertyGroup><IncludePath>你要加的目录路径,多个目录用分号隔开</IncludePath></PropertyGroup>。此文件的完整路径为
C:\Users\用户名\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props,
如果路径或文件不存在可以手动创建。
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"><PropertyGroup><IncludePath>目录1;目录2;</IncludePath></PropertyGroup><PropertyGroup><LibraryPath></LibraryPath></PropertyGroup>
</Project>