Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>C++ 解决方案浏览器 (SLN)New to Visual Studio Code? Get it now.
C++ 解决方案浏览器 (SLN)

C++ 解决方案浏览器 (SLN)

shiyp-a

|
4 installs
| (0) | Free
按 CMake 生成的 .sln 解决方案结构浏览 C++ 工程(解决方案文件夹 → 项目 → 筛选器/目录 → 文件),并提供基于项目清单的符号跳转:Ctrl+左键 / F12 跳定义,Ctrl+F12 跳实现。无需 cpptools、无需 compile_commands.json。
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

C++ 解决方案浏览器 (SLN)

在 VS Code / CodeBuddy / Cursor 中,按 CMake 生成的 .sln 解决方案结构 浏览 C++ 工程,并提供基于项目清单的符号跳转。

解决的问题:CMake 生成的工程里,物理目录(build/、CMakeFiles/、中间产物)和代码组织毫无关系;而资源管理器只会按物理目录展开。本插件直接还原 Visual Studio「解决方案资源管理器」的视图。

MySolution (解决方案)
└─ Core                     ← 解决方案文件夹(sln 中的 Solution Folder)
   └─ Render
      └─ MyRenderer         ← 项目(.vcxproj)
         ├─ Common          ← 筛选器 / 虚拟目录(Filter 或按相对路径生成)
         │  └─ Renderer.cpp
         ├─ Renderer.h
         └─ 引用             ← 项目依赖(ProjectReference)

功能

  • 还原解决方案层级:解析 .sln 的 Project、SolutionItems、NestedProjects,还原解决方案文件夹的父子层级,而不是物理目录。
  • 按项目查看源文件:解析每个 .vcxproj 的 ClCompile / ClInclude / None / CustomBuild …,有 .vcxproj.filters 时按筛选器分组(对应 CMake 的 source_group),否则按文件相对路径生成目录树。
  • 项目依赖:项目下的「引用」节点列出 ProjectReference(包含 VS 生成器写进 vcxproj 的依赖)。
  • 筛选与定位:按文件名关键字筛选整棵解决方案树;一键把当前编辑的文件在树中展开定位。
  • 跳转定义 / 实现:Ctrl+左键(或 F12)跳定义,Ctrl+F12 只跳实现,编辑器右键「跳转到定义/实现」列出全部候选。
  • 懒加载 + 磁盘缓存:项目只在展开时才解析,结果按文件 mtime/size 缓存到磁盘,大解决方案二次打开无感。
  • 零依赖:不调用 MSBuild、不需要 cpptools、不需要 compile_commands.json,纯文本解析。

安装

  • 从插件市场搜索 C++ 解决方案浏览器 (SLN) 安装;
  • 离线安装:在插件目录执行 npm i -g @vscode/vsce && vsce package 得到 .vsix,再用 IDE 的「从 VSIX 安装」;
  • 手动部署:把插件目录复制到 IDE 的扩展目录(如 VS Code 的 ~/.vscode/extensions/sln-explorer/)后重启。

快速开始

  1. 打开工作区后,侧边栏「资源管理器」底部出现视图 解决方案 (SLN)。
  2. 插件自动在工作区中查找 .sln(含被 gitignore 的 build/ 目录),多个时取体积最大的那个;也可以用标题栏第一个按钮手动选择。
  3. 单击文件节点打开;右键提供:打开 .vcxproj、在资源管理器中显示、在文件管理器中打开、复制(相对)路径。

跳转说明

搜索范围与优先级:

  1. 先在该文件所属项目的源文件清单内查找;没找到像样的结果时,扩展到被引用项目的头文件。
  2. 命中类型优先级:函数实现 → 类型/类 → 函数声明 → 变量 → 宏。
  3. 同名 .h/.cpp 互相优先;Class::method 会优先匹配限定名一致的结果。
  4. 结果唯一时直接跳转;多个时弹出 peek 列表供选择。

这是文本级跳转,不做语义分析与重载解析,因此能覆盖 IntelliSense 不可用(缺少编译数据库)的场景;反过来,若你已装好 cpptools/clangd + compile_commands.json,可把 slnExplorer.enableDefinitionProvider 设为 false 交给它们。

排查:输出面板 → SLN Explorer,会记录解决方案加载、命令注册情况以及每次查找的候选文件数与命中数。

命令

命令 说明
SLN: 选择解决方案 (.sln) 手动切换要加载的解决方案
SLN: 刷新解决方案 重新解析(CMake 重新生成后使用)
SLN: 在解决方案中定位当前文件 在树中展开并选中当前文件
SLN: 在解决方案中筛选文件 / 清除筛选 文件名关键字筛选
SLN: 跳转到定义/实现 以列表方式展示全部候选
SLN: 打开项目文件 (.vcxproj) 打开项目文件本身

配置

配置项 说明
slnExplorer.solutionPath 指定 .sln,支持 ${workspaceFolder};留空自动查找
slnExplorer.showExtensions 文件节点是否显示扩展名,默认 true
slnExplorer.showPredefinedTargets 是否显示 CMakePredefinedTargets(ALL_BUILD / ZERO_CHECK / INSTALL),默认 false
slnExplorer.excludeProjectPatterns 隐藏匹配项目名的项,如 ["ALL_BUILD","ZERO_CHECK","INSTALL"]
slnExplorer.searchDepth 自动查找 .sln 的递归深度,默认 6
slnExplorer.enableDefinitionProvider 是否注册 Ctrl+左键跳转,默认 true
slnExplorer.definitionSearchBudgetMs 符号搜索时间预算(毫秒),默认 1200

工作原理

  • src/slnParser.js:逐行解析 .sln,还原解决方案文件夹层级。
  • src/vcxprojParser.js:解析 .vcxproj 与 .vcxproj.filters,跳过 %(...)、通配符与未展开的 $(...) 变量。
  • src/solutionProvider.js:TreeDataProvider,懒加载 + 文件路径索引 + 磁盘缓存。
  • src/symbolLocator.js:基于正则的符号定位(实现/声明/类型/变量/宏),带关键字粗筛、调用上下文过滤与时间预算。

已知限制

  • 跳转是文本级实现,不做语义/重载解析,多处命中时给出候选列表。
  • 只解析文件清单与引用,不提供补全、诊断等 IntelliSense 能力。
  • 主要针对 CMake + Visual Studio 生成器产物;Makefile / Ninja 生成器不产出 .sln,本插件不适用(这类工程请用 compile_commands.json + clangd)。

更新日志

见插件包内的 CHANGELOG.md,或插件详情页的「更新日志」。

作者与许可

作者:shiyp-a · 许可:MIT(见插件包内 LICENSE.txt)

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft