用途:在用户明确想要 C#/.NET 代码、又不希望新建项目时,用 .NET CLI 直接运行基于文件的 C# 应用,适合语言或 API 实验、逻辑原型、单入口文件加少量辅助 .cs 文件的小工具。不适用于语言无关的临时脚本、shell/Python/PowerShell 式自动化、需要完整项目/解决方案集成,或代码已大到需要 .csproj 管理构建、测试与发布配置的场景。
主要能力:入口文件使用顶级语句,无需 Main、类或命名空间样板;支持 #: 指令,包括 #:package 引用 NuGet 包、#:property 设置 MSBuild 属性、#:project 引用项目、#:ref 引用其他文件型应用、#:sdk 选择 SDK,以及 #:include/#:exclude 组织多文件应用。默认启用原生 AOT,因此反射式 JSON 序列化会失败,需改用源生成序列化。
使用方式:先运行 dotnet --version 确认 SDK 为 .NET 10 或更高;文件型应用需 .NET 10+,#:include、#:exclude 及传递指令需 SDK 10.0.300+。将入口 .cs 放在现有项目目录之外,用 dotnet hello.cs 运行,参数放在 -- 之后。Unix 下可加 shebang 并 chmod +x 后直接执行。清理用 dotnet clean hello.cs,转为完整项目用 dotnet project convert hello.cs。SDK 低于 10 时改用临时控制台项目。
限制:指令必须紧跟在可选 shebang 之后、任何 using 或 C# 代码之前;#:package 需指定版本;包含文件间避免重复指令;应用会继承父目录的 global.json、Directory.Build.props 等配置,冲突时需移到隔离目录。其余细节暂未提供。