sublime text 运行 c# 必须先安装并验证 dotnet cli 可用,dotnet --version 返回版本号且 dotnet run 能输出 hello, world!;构建系统中 working_dir 必须设为 "${project_path:${folder}}" 以确保在含 .csproj 的项目根目录执行命令,否则报错“no executable found matching command 'dotnet-run'”。

Sublime Text 本身不支持 C# 编译或运行,所有“跑起来”的动作都依赖你本地是否装好、能否调用 dotnet CLI;没这一步,后续所有配置全是空转。
验证 dotnet 是否真可用
这是唯一硬性前提,跳过它 90% 的失败就已注定。
- 打开终端(CMD / PowerShell / Terminal),执行
dotnet --version—— 必须返回类似8.0.400的版本号,不能报'dotnet' is not recognized - 接着跑完整流程:
dotnet new console -o test && cd test && dotnet run,看到Hello, World!才算过关 - Windows 用户安装 SDK 时务必勾选「将 dotnet 添加到 PATH」;macOS 用
brew install dotnet-sdk后,检查~/.zshrc是否有source $(brew --prefix)/etc/profile.d/dotnet.sh并已重载 - Linux 用户慎用 snap 安装的 .NET(权限隔离常导致 Sublime 调用失败),优先选 tar.gz 或 apt 包
working_dir 必须指向含 .csproj 的项目根目录
Sublime 不解析 .cs 文件内容,也不识别单文件入口;dotnet run 只在有 .csproj 的目录下才有效。
- 构建系统里写
"working_dir": "${file_path}"是最常见错误——它把工作目录设为.cs文件所在路径,而非项目根目录 - 正确写法是
"working_dir": "${project_path:${folder}}":优先用项目路径,没开项目就退到当前文件夹;但该文件夹下必须有.csproj,否则报错No executable found matching command "dotnet-run" - 纯英文、无空格、无中文路径——
dotnetCLI 在某些旧版或非标准 shell 下对路径敏感,遇到空格或中文可能静默失败
别试图用 dotnet run 直接运行单个 .cs 文件
没有 .csproj 就没有项目上下文,dotnet run 根本不知道从哪开始。
- 想快速试一段逻辑?改用
dotnet script(需额外安装)或系统自带的csc编译器(仅限简单场景) - 如果坚持单文件,推荐新建最小项目:
dotnet new console -n MyScript,删掉默认Program.cs,把你的代码粘进去再dotnet run - 不要指望插件自动补全项目结构——Sublime 没有项目感知能力,它只负责把命令丢给终端
构建系统配置要点与变体设计
一个能用的 CSharp.sublime-build 文件,核心就三件事:调什么命令、在哪调、怎么切动作。
-
"cmd": ["dotnet", "run"]是默认行为,必须配"selector": "source.cs"实现打开.cs文件即激活 -
"variants"里加Build和Clean很实用:dotnet build可提前捕获编译错误,dotnet clean能清掉bin/obj避免缓存干扰 - 错误跳转靠
"file_regex",建议加上:"file_regex": "^(.*?\.[^:]*):([0-9]+):([0-9]+):\s+(.*)$",匹配标准dotnet build输出格式 - 保存路径必须是
Packages/User/目录下(可通过 Sublime 菜单 Preferences → Browse Packages… 确认),否则不会生效
真正卡住人的往往不是配置写得对不对,而是 dotnet 命令本身在 Sublime 启动的子进程中不可见,或者 working_dir 指向了一个看似合理实则没有 .csproj 的路径——这两点必须手动验证,不能靠“应该可以”来推进。










