不能——notepad++无内置编译器,需调用系统csc.exe或dotnet实现编译运行,前提是.net环境就绪、path配置正确,并推荐使用nppexec插件自动化流程。

Notepad++ 本身不能运行 C# 代码,但能调用系统 csc.exe 或 dotnet 完成编译+执行,前提是 .NET 环境就绪、路径可访问、命令写对——否则会静默失败或报“不是内部或外部命令”。
确认 csc.exe 是否可用
这是所有操作的前提,跳过这步大概率后续全卡住。打开 cmd,直接输:
csc /?
如果看到帮助信息,说明已就位;若提示“不是内部或外部命令”,则需检查:
-
csc.exe常见位置:C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe(.NET Framework 4.x) -
C:\Program Files\dotnet\dotnet.exe(.NET 5+,此时不用csc,改用dotnet build+dotnet run) - 环境变量
PATH是否包含对应目录(如添加C:\Windows\Microsoft.NET\Framework\v4.0.30319) - 注意:64 位系统可能同时有
Framework和Framework64,选对位数(多数情况用Framework即可)
NppExec 插件配置 csc 编译执行流程
比 F5 → 运行 更可靠,支持当前目录控制、错误反馈和快捷键绑定。操作要点:
- 通过
插件 → Plugin Manager → 安装 NppExec,重启 Notepad++ - 按
F6打开 NppExec 控制台,输入以下四行(必须换行):
NPP_SAVE cd "$(CURRENT_DIRECTORY)" csc /t:exe /out:"$(NAME_PART).exe" "$(FULL_CURRENT_PATH)" "$(NAME_PART).exe"
- 点击
Save...,命名为C#_Run - 勾选
Follow $(CURRENT_DIRECTORY)(关键!否则.exe生成在 Notepad++ 安装目录下) -
/t:exe必须显式指定,否则默认输出.dll,双击无反应 - 路径含空格或中文时,
"$(FULL_CURRENT_PATH)"的引号不能省,否则csc报“找不到文件”
F5 运行菜单配置的常见翻车点
虽不如 NppExec 稳定,但适合快速验证。在 F5 弹窗中填入以下单行命令(注意是纯文本,无换行):
cmd /k csc /t:exe /out:"$(CURRENT_DIRECTORY)\$(NAME_PART).exe" "$(FULL_CURRENT_PATH)" & "$(CURRENT_DIRECTORY)\$(NAME_PART).exe" & PAUSE
容易出错的地方:
- 漏掉
$(CURRENT_DIRECTORY)\:生成的.exe跑到C:\Windows\System32或 Notepad++ 目录,下次根本找不到 - 没加双引号包裹路径:遇到
C:\My Projects\test.cs这类路径,csc直接拆成两个参数,报错“无法打开输入文件” - 结尾没加
& PAUSE:窗口一闪而过,看不到Console.WriteLine输出 - 误用
dotnet new console生成的 SDK 风格项目:这类结构不支持单文件csc编译,必须用dotnet build
引用外部程序集(如 System.Windows.Forms)怎么办
默认只引用 mscorlib.dll 和 System.dll,要调 UI 或数据库等,得手动加 /r: 参数:
csc /r:System.Windows.Forms.dll /t:winexe /out:test.exe test.cs
关键细节:
-
/t:winexe替代/t:exe,避免控制台窗口闪现(适合 WinForm 程序) - 多个引用用分号隔开:
/r:System.Windows.Forms.dll;System.Drawing.dll - 路径不明确时,优先用完整路径:
/r:"C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.0\ref\net7.0\System.Windows.Forms.dll" -
unsafe代码需额外加/unsafe参数,否则编译报错
真正麻烦的从来不是写命令,而是路径没对齐、引号漏一半、或者以为 csc 能编译现代 .csproj 项目——它不能,那得交给 dotnet。











