sublime text 本身不能运行 c#,必须依赖系统已安装并可用的 dotnet cli;需先验证终端中 dotnet --version 成功返回版本号,且 dotnet new console && dotnet run 输出“hello, world!”,再配置构建系统 working_dir 为含 .csproj 的项目根目录。

Sublime Text 本身不能运行 C#,它只调用你系统里已装好的 dotnet CLI;如果你在终端里连 dotnet --version 都执行失败,那所有配置都白搭——这是唯一不可绕过的前提。
dotnet 命令必须能在终端里直接运行
这不是 Sublime 的问题,是环境没配好。Windows 用户安装 .NET SDK 时漏选「将 dotnet 添加到 PATH」,macOS 用户没在 ~/.zshrc 里加载 dotnet.sh,Linux 用户用 snap 安装导致权限隔离,都会让 Sublime 找不到命令。
- 打开终端,执行
dotnet --version,必须输出类似8.0.300的版本号 - 再跑一次验证:执行
dotnet new console -o test && cd test && dotnet run,看到Hello, World!才算真正过关 - Sublime 启动后不会自动继承新环境变量,Windows/macOS 用户改完 PATH 后要重启 Sublime
构建系统必须设 working_dir 为项目根目录(含 .csproj)
Sublime 不会自动识别哪个文件夹是“项目”,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 不支持单文件编译,csc已弃用 - 如果只是临时测代码片段,改用
dotnet script(需额外安装),和这个构建系统无关
selector 和 file_regex 决定体验是否顺手
selector 控制构建系统何时自动激活,file_regex 决定错误能不能双击跳转到对应行——这两项配错,你会反复切窗口查报错位置。
-
"selector": "source.cs"是必须的,否则打开.cs文件时构建系统不自动选中 - 推荐的
file_regex:"^([^:]*):([0-9]+):([0-9]+):\s+(error|warning)\s+(.*)$",能匹配Program.cs(12,5): error CS1002: ; expected这类标准输出 - 别用网上那些漏转义括号或写错分组的正则,Sublime 解析失败后错误就卡在底部面板里点不动
最常被忽略的一点:Sublime 不处理项目结构生成、引用解析或智能补全——它只负责调命令。如果后续需要跳转定义、查看类型、实时错误提示,得单独配 OmniSharp + Mono,且路径必须指向 Unity 或 .NET SDK 自带的 DLL,错一个就整个补全失效。










