袁可佳 发表于 2025-6-16 05:54:40

.NET 10 支持Linux/Unix 的Shebang(Hashbang)

.NET 10 Preview 5 带来的C# 文件脚本化运行,在 Linux/Unix 系统中通过 #!/usr/bin/dotnet run 支持 Shebang(Hashbang) 的详细说明:
⚙️ 一、Shebang 的原理与作用


[*]基本定义 Shebang(又称 Hashbang)是脚本文件开头的特殊标记,格式为 #!。


[*]作用:告知操作系统使用指定程序执行脚本,无需显式调用解释器。


[*]示例:
<p><font face="微软雅黑" size="3">#!/usr/bin/dotnet run# 指定用 dotnet run 执行后续代码</font></p><p><font face="微软雅黑" size="3">Console.WriteLine("Hello from C# script!");</font></p>


[*]运行机制


[*]当直接执行脚本(如 ./hello.cs)时,系统读取首行 Shebang,调用 /usr/bin/dotnet run 解释文件内容。


[*]若未添加可执行权限(chmod +x hello.cs),会报权限错误。
二、在 C# 中使用 Shebang 的方法(.NET 10 支持)

步骤详解


[*]添加 Shebang 声明 在 C# 文件首行写入:
<p><font face="微软雅黑" size="3">#!/usr/bin/dotnet run</font></p><p><font face="微软雅黑" size="3">Console.WriteLine("Hello, .NET 10!");</font></p>


[*]赋予可执行权限
<p><font face="微软雅黑" size="3">chmod +x hello.cs# 使文件可直接执行</font></p>


[*]直接运行脚本
<p><font face="微软雅黑" size="3">./hello.cs# 输出:Hello, .NET 10!</font></p>

关键特性


[*]无需项目文件:直接运行单个 .cs 文件,无需 .csproj 或编译步骤。


[*]依赖管理:结合文件级指令(如 #:package)引用 NuGet 包:
<p><font face="微软雅黑" size="3">#!/usr/bin/dotnet run</font></p><p><font face="微软雅黑" size="3">#:package Humanizer@2.14.1</font></p><p><font face="微软雅黑" size="3">using Humanizer;</font></p><p><font face="微软雅黑" size="3">Console.WriteLine(TimeSpan.FromDays(1).Humanize());// 输出:"1 day"</font></p>

指令需紧接 Shebang 后声明。
⚡ 三、实际应用场景


[*]自动化脚本


[*]替代 Bash/Python 编写系统工具(如日志清理、文件备份):
<p><font face="微软雅黑" size="3">#!/usr/bin/dotnet run</font></p><p><font face="微软雅黑" size="3">foreach (var file in Directory.GetFiles("./logs"))</font></p><p><font face="微软雅黑" size="3">    File.Delete(file);</font></p>


[*]快速原型验证


[*]直接运行代码片段验证逻辑,省去创建项目的开销。

[*]跨平台 CLI 工具


[*]通过 Shebang 兼容 Linux/macOS,Windows 需通过 dotnet run hello.cs 显式执行(因 Windows 不支持 Shebang)。
⚠️ 四、注意事项与限制


[*]系统兼容性


[*]仅限 Unix/Linux:Shebang 在 Windows 无效,需改用 dotnet run hello.cs。


[*]路径正确性:若 /usr/bin/dotnet 不存在,需调整为实际安装路径(如 #!/usr/local/bin/dotnet run)。

[*]文件格式要求


[*]首行声明:Shebang 必须是文件第一行,否则无效。


[*]编码与换行符:文件需保存为 UTF-8 编码,使用 LF 换行符(Unix 格式)。

[*]当前限制


[*]多文件支持:暂不支持跨文件引用(如 partial class),需等待后续更新。


[*]调试支持:需转换为正式项目(dotnet project convert hello.cs)后调试。
五、与传统执行方式的对比



总结


[*]开发者价值: Shebang 支持使 C# 成为真正的脚本语言,降低学习门槛,提升在自动化场景的竞争力,尤其适合 DevOps 和跨平台工具开发。


[*]适用场景:快速验证、小型工具开发、教学演示。


[*]未来展望:多文件支持、Windows 兼容优化(如通过 env 查找路径)。
提示:通过 .NET 10 SDK 安装体验,搭配 VS Code + C# Dev Kit 扩展可获得完整脚本开发支持。下载地址:https://dotnet.microsoft.com/zh-cn/download 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: .NET 10 支持Linux/Unix 的Shebang(Hashbang)