无需VsDevCmd.bat获取新版Visual Studio的VCToolsVersion
获取VS 2022的VCToolsVersion:读取Microsoft.VCToolsVersion.default.txt是可靠方案
你的方法完全正确,Microsoft.VCToolsVersion.default.txt正是Visual Studio官方用来指定默认VC工具链版本的文件,用它来获取VCToolsVersion是稳定且合规的方式。
具体细节:
- 文件位置固定在VS安装路径的
VC\Auxiliary\Build目录下,比如VS 2022 Enterprise对应的完整路径为:C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt - 文件内容是纯版本号(如
14.36.32532),无多余字符,直接读取后去除换行符即可使用。
Python实现示例:
import os import subprocess # 用vswhere获取VS 2022的安装路径 vswhere_path = os.path.join(os.environ["ProgramFiles(x86)"], "Microsoft Visual Studio", "Installer", "vswhere.exe") vs_install_path = subprocess.check_output([ vswhere_path, "-products", "*", "-version", "[17.0,18.0)", # VS 2022对应的版本号范围 "-requires", "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", "-property", "installationPath" ]).decode("utf-8").strip() # 读取默认工具链版本 tools_version_path = os.path.join(vs_install_path, "VC", "Auxiliary", "Build", "Microsoft.VCToolsVersion.default.txt") with open(tools_version_path, "r") as f: vc_tools_version = f.read().strip() # 拼接atlmfc头文件路径 atlmfc_include_path = os.path.join(vs_install_path, "VC", "Tools", "MSVC", vc_tools_version, "atlmfc", "include") print(atlmfc_include_path)
补充说明:
- vswhere确实没有直接输出VCToolsVersion的参数,因此读取这个默认文件是最直接的非批处理方案。
- 该文件内容会随VS的更新(如安装工具链补丁)自动同步,能保证拿到当前VS使用的默认工具链版本。
内容的提问来源于stack exchange,提问作者James Z
相关产品推荐
相关产品推荐

