C# 项目管家
一个 VS Code 插件,用于管理工作区中的所有 .csproj 项目文件。支持勾选、过滤、一键编译、一键生成多项目调试配置,帮助你在大型 .NET 解决方案中快速定位和操作项目。
✨ 功能特色
- 🔍 自动扫描:递归扫描工作区所有
.csproj 文件(自动跳过 node_modules、bin、obj 等目录)。
- ☑️ 勾选管理:在侧边栏列表中点按项目前的圆圈即可切换勾选状态,勾选状态自动保存,重启 IDE 后依然保留。
- ⚡ 批量编译:点击标题栏的 编译图标 (⚡) 即可一次性编译所有被勾选的项目。
- ▶️ 一键生成调试配置:点击 调试图标 (▶️) 自动为所有勾选的项目生成
launch.json 和复合调试配置,实现多项目同时启动调试。
- 🖱️ 右键快捷操作:
- 在项目节点上右键,可快速执行 "编译此项目",或一键 选择所有项目、反选其他项目,或点击 "只显示勾选项目"(开启后仅显示已勾选项目,菜单项变为 "显示全部项目",点击可恢复;状态存内存不落盘,重启后恢复默认;无勾选时自动显示全部,避免列表为空无法关闭该开关)。
- 📄 配置文件子节点:展开项目节点可查看其下的
appsettings*.json(含 appsettings.Development.json、appsettings.uat.json 等环境变体)与 Properties/launchSettings.json,单击即可打开编辑(可通过配置项 "加载主要配置文件" 开关控制,默认开启)。
- 🔎 实时过滤:点击 搜索图标 输入关键词,按文件名或路径过滤项目列表。停止输入 1 秒后自动过滤,回车立即过滤并关闭输入框。
- 🎯 持久化正则过滤:在设置中配置
csharpProjectsManager.filterRegex,使用正则表达式永久过滤项目(仅显示匹配项),修改后立即生效。
- ⚙️ 一键跳转设置:点击 配置图标 直接打开本插件的设置界面。
- 🔄 手动刷新:点击 刷新图标 重新扫描项目文件(当文件有变动时使用)。
📦 安装
- 下载
.vsix 安装包。
- 在 VS Code 中,打开扩展面板(
Ctrl+Shift+X)。
- 点击右上角
... → "从 VSIX 安装...",选择下载的 .vsix 文件。
- 重启 IDE 即可使用。
🧭 使用方式
- 打开一个包含
.csproj 文件的工作区。
- 在侧边栏 资源管理器 下方找到 "C# 项目列表" 视图。
- 在列表中点击项目前的 ○ 圆圈 切换勾选状态(变为 ✔ 勾选)。
- 使用视图标题栏的按钮:
- ⚡ 编译:一键编译所有勾选项目
- ▶️ 调试:为所有勾选项目生成调试配置
- 🔄 刷新:重新扫描项目
- 🔍 搜索:输入关键词实时过滤(停止输入 1 秒自动过滤,回车立即过滤并关闭)
- ⚙️ 配置:打开设置界面
- 在项目节点上 右键 可执行:
- 编译此项目:编译当前项目
- 选择所有项目 / 反选其他项目:一键全选或反选所有项目
- 只显示勾选项目:仅显示已勾选项目(开启后菜单项变为 显示全部项目,点击可恢复;无勾选时自动显示全部,避免列表为空无法关闭)
- 展开项目节点可查看配置文件(
appsettings*.json 及 Properties/launchSettings.json),单击子节点直接在编辑器中打开。
▶️ 多项目调试配置生成
点击调试图标后,插件会自动:
- 读取所有被勾选的项目。
- 检测每个项目的目标框架(从
.csproj 中读取 <TargetFramework>)。
- 为每个项目生成独立的调试配置(
type: coreclr)。
- 创建复合调试配置(
compounds),将所有项目组合在一起。
- 更新或创建
.vscode/launch.json 文件。
使用生成的调试配置:
- 在 VS Code 的 "运行和调试" 侧边栏顶部下拉菜单中,选择
Launch All Selected。
- 点击绿色 "开始调试" 按钮或按
F5。
- 所有项目将同时启动,并在同一个调试界面中统一控制。
提示:生成的调试配置通过 preLaunchTask 自动执行对应项目的编译任务,编译成功后才启动调试,无需手动先执行 dotnet build。
⌨️ 命令列表
所有命令均可通过命令面板(Ctrl+Shift+P)执行:
| 命令 ID |
说明 |
csharp-projects-manager.buildSelected |
编译所有选中的项目 |
csharp-projects-manager.buildProject |
编译右键点击的单个项目 |
csharp-projects-manager.generateLaunchConfig |
为选中的项目生成调试配置 |
csharp-projects-manager.selectAll |
选择所有项目 |
csharp-projects-manager.invertSelection |
反选其他项目 |
csharp-projects-manager.toggleShowCheckedOnly |
只显示勾选项目(开启后菜单项变为“显示全部项目”) |
csharp-projects-manager.disableShowCheckedOnly |
显示全部项目(退出“只显示勾选项目”模式) |
csharp-projects-manager.refresh |
重新扫描 .csproj 文件 |
csharp-projects-manager.filterProjects |
打开输入框进行实时过滤(停止输入 1 秒自动过滤) |
csharp-projects-manager.toggleCheck |
切换项目勾选状态(点击项目时触发) |
csharp-projects-manager.openSettings |
打开本插件设置页 |
⚙️ 配置
在 VS Code 的设置中搜索 csharpProjectsManager,可配置:
📂 显示与过滤
🛠️ 构建任务
csharpProjectsManager.buildTaskType:字符串类型,默认 shell。
- 可选值:
shell(Shell 类型任务,推荐,自动处理路径和引号)、process(Process 类型任务,更底层,需要手动处理路径)。
- 控制生成的
tasks.json 中构建任务的类型。
csharpProjectsManager.buildTaskProblemMatcher:字符串类型,默认 $msCompile。
- 构建任务使用的 problem matcher,用于解析编译输出中的错误和警告。
csharpProjectsManager.additionalBuildArgs:字符串类型,默认 ""。
- 为所有构建任务添加额外的
dotnet build 参数,多个参数用空格分隔。
- 示例:
--no-restore -c Release。
▶️ 调试配置
csharpProjectsManager.targetFramework:字符串类型,默认 ""。
- 生成调试配置时使用的目标框架版本。留空则自动从项目文件(
csproj/Import/Directory.Build.props)检测;填写则所有项目强制使用指定值,例如 net8.0。
csharpProjectsManager.configUpdateMode:字符串类型,默认 incremental。
- 可选值:
incremental(增量更新:保留用户手动添加及勾选过项目的配置,只追加新勾选的项目配置)、overwrite(完全覆盖:重新生成 tasks.json 和 launch.json,清空所有已有内容)。
- 控制生成
tasks.json 和 launch.json 时的更新模式。
csharpProjectsManager.consoleType:字符串类型,默认 internalConsole。
- 可选值:
internalConsole(调试控制台,只输出,不支持输入)、integratedTerminal(集成终端,支持输入输出交互)、externalTerminal(外部终端,独立的终端窗口)。
- 控制调试时程序输出显示的位置。
csharpProjectsManager.autoOpenBrowser:布尔类型,默认 true。
- 对于 Web 项目,调试启动后是否自动打开浏览器。
csharpProjectsManager.launchStopAtEntry:布尔类型,默认 false。
- 调试时是否在程序入口点(
Main 方法)自动暂停。
csharpProjectsManager.additionalLaunchArgs:字符串类型,默认 ""。
- 为所有调试配置添加额外的命令行参数,多个参数用空格分隔。
提示:“只显示勾选项目”为会话内临时状态(不写入配置文件),重启 VS Code 后自动恢复为显示全部。
🧪 要求
- VS Code 版本
^1.80.0(兼容的 VS Code 内核版本)。
- .NET SDK(用于编译项目:
dotnet build;调试通过 VS Code 的 C# 调试器执行)。
- C# 扩展(推荐安装
ms-dotnettools.csharp,用于调试支持)。
🐛 故障排除
- 无法看到 "C# 项目列表" 视图:请确保工作区内至少有一个
.csproj 文件(插件会递归扫描整个工作区)。视图显隐在窗口启动时检测,如已存在项目仍不显示,请重新加载窗口。
- 项目列表为空:尝试点击 刷新 按钮,或确认项目不在被跳过的目录(
node_modules、bin、obj、packages、.git)中。
- 正则表达式无效:插件会弹出错误提示,请检查设置中的正则语法。
- 编译失败:请检查终端输出,确保项目依赖完整且目标框架正确。
- 调试配置无法启动:
- 确保已安装 C# 扩展(
ms-dotnettools.csharp)。
- 检查
launch.json 中的 program 路径是否正确指向 .dll 文件。
- 确保项目已编译(
dotnet build)且目标框架与配置一致。
- 多个 Web 项目启动时若端口冲突,请在配置的
args 或 env 中设置不同的端口。
📄 许可
MIT License
| |