dotnet 命令必须可用,否则所有配置无效;需验证 dotnet --version 成功返回版本号,且 dotnet new console && dotnet run 输出“Hello, World!”;Sublime 构建系统须设 working_dir 为项目根目录(含 .csproj),禁用 ${file_path};单文件运行应改用 dotnet script 或 csc,非 dotnet run。

dotnet 命令必须可用,否则所有配置都无效——这是唯一硬性前提。Sublime Text 本身不带 C# 编译器、不启动运行时、也不解析 .csproj,它只负责调用你系统里已装好的 dotnet CLI。
确认 .NET SDK 已正确安装并可被 Sublime 读取
打开终端(CMD / PowerShell / Terminal),执行:dotnet --version
如果报错 'dotnet' is not recognized,说明没装或没进 PATH。此时任何 Sublime 配置都白搭。
Windows 用户安装 .NET SDK 时务必勾选「将 dotnet 添加到 PATH」;macOS 用 brew install dotnet-sdk 后,检查 ~/.zshrc 是否有 source $(brew --prefix)/etc/profile.d/dotnet.sh 并已生效;Linux 用户注意是否用了 snap 安装(snap 版本常因权限问题无法被 Sublime 调用)。
验证是否真能跑起来:dotnet new console -o test && cd test && dotnet run
输出 Hello, World! 才算过关。别跳过这步——很多“配置失败”其实卡在这儿。
创建 C# 构建系统(.sublime-build)
Sublime 不支持单文件直接 dotnet run,它只认含 .csproj 的项目。所以构建系统的工作目录必须落在项目根目录(即有 .csproj 文件的那层)。
菜单栏 → Tools → Build System → New Build System…,粘贴以下内容并保存为 CSharp.sublime-build(路径必须是 Packages/User/ 目录下):
{
"cmd": ["dotnet", "run"],
"selector": "source.cs",
"working_dir": "${project_path:${folder}}",
"variants": [
{
"name": "Build",
"cmd": ["dotnet", "build"]
},
{
"name": "Clean",
"cmd": ["dotnet", "clean"]
}
]
}关键点:
-
"working_dir": "${project_path:${folder}}":优先用项目路径,没开项目就退到当前文件夹——但若该文件夹下没有.csproj,dotnet run会直接报错No executable found matching command "dotnet-run" -
"selector": "source.cs"让你一打开.cs文件,这个构建系统就自动激活 - 不要用
${file_path}当工作目录——它指向.cs文件所在目录,不是项目根目录,90% 的“找不到项目”错误源于此
想跑单个 .cs 文件?别硬套 dotnet run
没有 .csproj 时,dotnet run 会失败。可行替代方案只有两个:
-
dotnet script:需额外安装(dotnet tool install -g Microsoft.DotNet.Interactive.Tools),然后改构建系统"cmd"为["dotnet", "script", "${file}"]。但它不支持async Main、不加载 NuGet 包、调试体验差 - 用
csc编译成 exe 再执行:命令形如["csc", "/out:${file_path}/${file_base_name}.exe", "${file}"],但需手动处理引用(/reference)、目标框架、入口点等,且 Windows 外平台默认没csc
结论:真要频繁写单文件脚本,换 dotnet script 或直接用 VS Code;在 Sublime 里坚持项目方式(dotnet new 初始化)才是稳定路径。
为什么 OmniSharp 插件不是必需项
OmniSharp 提供代码补全、跳转、错误实时提示等功能,但它依赖 dotnet + msbuild + 正确的项目结构,且需要额外配置 omnisharp.json 和语言服务器路径。如果你只是写控制台小工具、临时调试算法、或配合 CI 脚本生成代码,原生构建系统加终端 dotnet watch run 更轻量、更可控。
容易被忽略的细节:
- Sublime 启动后才读一次环境变量——装完 .NET SDK 必须重启 Sublime,否则它根本看不到新
dotnet - macOS 上通过 Homebrew 安装的
dotnet,可能因 shell 配置未重载导致 Sublime 读不到,建议用launchctl setenv PATH "...:$(brew --prefix)/bin"注册全局 PATH -
dotnet run默认监听文件变化并热重载,但 Sublime 的构建系统是一次性命令,不会自动重启——要热重载得手动按Ctrl+B或另起终端跑dotnet watch run


















