You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 19:27:49