V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Need4more
V2EX  ›  .NET

csharp 这回真成了脚本语言: dotnet run app.cs

  •  1
     
  •   Need4more · 40 天前 · 3156 次点击
    这是一个创建于 40 天前的主题,其中的信息可能已经有所发展或是发生改变。

    dotnet 10 支持直接运行 cs 源文件

    引用三方包

    #:package [email protected]
    
    using Humanizer;
    
    var dotNet9Released = DateTimeOffset.Parse("2024-12-03");
    var since = DateTimeOffset.Now - dotNet9Released;
    
    Console.WriteLine($"It has been {since.Humanize()} since .NET 9 was released.");
    

    linux shebang

    #!/usr/bin/dotnet run
    Console.WriteLine("Hello from a C# script!");
    
    chmod +x app.cs
    ./app.cs
    

    https://devblogs.microsoft.com/dotnet/announcing-dotnet-run-app

    v 站的 dotnet 节点好冷清~~~

    27 条回复    2025-08-17 14:44:38 +08:00
    SwaggyMacro
        1
    SwaggyMacro  
       40 天前
    是的,V 站写 C# 的应该很少。
    这个我之前也看到了,好事儿!
    songpengf117
        2
    songpengf117  
       40 天前 via iPhone   ❤️ 4
    “直接运行” 跟脚本语言 不能划等号
    quan01994
        3
    quan01994  
       40 天前
    不冷清 。

    不过对于我说,这个不吸引我 。
    wdv2ly
        4
    wdv2ly  
       40 天前 via Android
    看起来跟多年前的 csscript 没啥区别
    imydou
        5
    imydou  
       40 天前 via iPhone   ❤️ 3
    go run main.go
    profchaos
        6
    profchaos  
       40 天前
    fsharp: 这下真的底裤都被拿走了
    aloxaf
        7
    aloxaf  
       40 天前
    tcc -run main.c
    duzhuo
        8
    duzhuo  
       40 天前
    @songpengf117 可以写脚本的语言
    timy007
        9
    timy007  
       40 天前
    很棒 但是国内没人用吧
    liuliuliuliu
        10
    liuliuliuliu  
    PRO
       40 天前   ❤️ 1
    最新的 preview6 里的优化还有几点:
    1. 可以直接 dotnet app.cs ,不用加 run 了
    2. shebang 里也可以不用加 run 了,直接 #!/usr/bin/dotnet
    xingheng
        11
    xingheng  
       40 天前
    这么说的话连 Swift 都成“脚本语言”了,所有支持 REPL 的语言都是了。
    zwzwzwzwzxt
        12
    zwzwzwzwzxt  
       40 天前
    rust 也是脚本语言 /doge

    ```
    #!/bin/sh
    #![allow(unused_attributes)] /*
    OUT=/tmp/tmp && rustc "$0" -o ${OUT} && exec ${OUT} $@ || exit $? #*/

    fn main() {
    println!("hello world");
    }
    ```
    Need4more
        13
    Need4more  
    OP
       40 天前
    @wdv2ly
    肯定是借鉴了社区的现有项目,但这次是官方内置了。

    这个博客详细说明了其特性和背后实现原理
    https://andrewlock.net/exploring-dotnet-10-preview-features-1-exploring-the-dotnet-run-app.cs/

    其中有两个命令很有意思:
    `dotnet publish app.js` 一键发布脚本为 aot 过的单文件 exe

    `dotnet project convert app.js` 无缝从脚本升级为项目,从原型到生产,渐进过度
    xiangyuecn
        14
    xiangyuecn  
       40 天前
    老古董.net framework 里面自带了编译器,直接拿来编译一下源码运行没啥问题

    搬出我的古董代码:.net framework 4.5+,.NET Core 2.0+,.NET 5+,直接从源码运行

    中英双语,win 、linux 均可用😂

    https://github.com/xiangyuecn/RSA-csharp/blob/master/Test-Build-Run.bat

    https://github.com/xiangyuecn/RSA-csharp/blob/master/Test-Build-Run.sh
    Need4more
        15
    Need4more  
    OP
       40 天前 via iPhone
    @xiangyuecn 很棒!有没有考虑用 dotnet aot 重写这两个脚本 😄
    idragonet
        16
    idragonet  
       40 天前
    NET 程序员支持下!
    INCerry
        17
    INCerry  
       40 天前
    其实这个功能挺有用的,有时候写一些脚本不想用 shell ,python 不一定装了环境,还是用熟悉的编程语言会比较方便
    Bronya
        18
    Bronya  
       40 天前
    很棒啊,之前还得装 dotnet-script
    nilaoda
        19
    nilaoda  
       40 天前
    @Need4more 社区项目 https://github.com/bflattened/bflat 也可以直接将 cs 文件编译为 Native AOT 版本
    xomix
        20
    xomix  
       40 天前
    这功能当年是官方 dot net 教程第一个例子就会写出来的。
    这真是肯德基吮指原味鸡 鸡排 限时回归大促。
    magicdawn
        21
    magicdawn  
       40 天前
    kzfile
        22
    kzfile  
       40 天前
    c#写起来蛮舒服的,做一些特定的二次开发也只能用 c#,就是生态没那么丰富
    liaohongxing
        23
    liaohongxing  
       40 天前
    go 也可以 go run main.go , 但是只是个快捷方式 ,build + run 一起执行而已 ,并不是传统意义上的脚本 ,不知道 .net 是否 是这样, 我想应该也是跟 go 一样的,不可能另造一个脚本解析器。
    Need4more
        24
    Need4more  
    OP
       40 天前
    @nilaoda 不错!优势在于生成的二进制很小,可是还不支持 mac ,不支持 nuget 包
    ragnaroks
        25
    ragnaroks  
       40 天前
    能替代 .ps1 就好,ps 真的一坨狗屎
    dmanbu
        26
    dmanbu  
       39 天前
    powershell 可以去死了
    shiloh595
        27
    shiloh595  
       16 天前 via Android
    古德古德
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5332 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:43 · PVG 15:43 · LAX 00:43 · JFK 03:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.