sublime text 本身不运行 c#,仅调用系统已安装的 dotnet cli;必须先验证终端中 dotnet --version 成功返回版本号且 dotnet run 输出“hello, world!”,再配置构建系统 working_dir 为含 .csproj 的项目根目录,并设置 selector 为 "source.cs" 和正确 file_regex 实现错误跳转。

Sublime Text 本身不运行 C#,它只调用你系统里已装好的 dotnet CLI;如果终端里连 dotnet --version 都执行失败,所有配置都无效——这是唯一不可绕过的基础。
验证 dotnet CLI 是否真可用
别跳过这步。Sublime 的构建系统本质是执行命令行,dotnet 必须在终端中直接可用,否则 Ctrl+B 按下去就是静默失败或报错 'dotnet' is not recognized。
- 打开终端(CMD / PowerShell / Terminal),执行
dotnet --version—— 必须输出类似8.0.300的版本号 - 再跑一次完整流程:
dotnet new console -o test && cd test && dotnet run,看到Hello, World!才算真正过关 - Windows 用户安装 .NET SDK 时漏选「将 dotnet 添加到 PATH」、macOS 用户没在
~/.zshrc中加载dotnet.sh、Linux 用户用snap安装导致权限隔离,都会让 Sublime 找不到命令 - Sublime 启动后不会自动继承新环境变量,改完 PATH 后必须重启 Sublime
working_dir 必须指向含 .csproj 的项目根目录
Sublime 不解析代码结构,也不识别单个 .cs 文件的入口;dotnet run 只认当前目录下有没有 .csproj。用 ${file_path} 当工作目录,90% 的情况会报错 No executable found matching command "dotnet-run" 或 MSB1009: Project file does not exist。
- 正确写法是
"working_dir": "${project_path:${folder}}":优先取项目路径,没开项目就退到当前文件夹——但该文件夹下必须有.csproj - 不要手动建一个裸
hello.cs就按 Ctrl+B——现代 .NET(5+)已弃用单文件编译,csc不再推荐,dotnet run无法处理 - 路径必须纯英文、无空格、无中文;某些 shell 下遇到非 ASCII 字符或空格会静默失败
构建系统配置要点与 file_regex 坑点
一个能用的 CSharp.sublime-build 文件,核心就三件事:调什么命令、在哪执行、错误能不能点进去。配错 file_regex,报错就卡在底部面板里,双击无效。
-
"selector": "source.cs"是必须的,否则打开.cs文件时构建系统不自动激活 - 推荐的
file_regex:"^([^:]*):([0-9]+):([0-9]+):\s+(error|warning)\s+(.*)$",能匹配Program.cs(12,5): error CS1002: ; expected这类标准输出 - 别用网上漏转义括号或分组错位的正则,Sublime 解析失败后错误就停在面板里不动
- 想临时测几行代码?改用
dotnet script(需额外安装:dotnet tool install -g dotnet-script),和这个构建系统无关
最常被忽略的一点:Sublime 不处理项目结构生成、引用解析或智能补全——它只负责调命令。后续需要跳转定义、查看类型、实时错误提示,得单独配 OmniSharp,且它高度依赖 Mono 和 DLL 路径准确性,配错一步几乎不工作。











