首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >dotnet-exec 0.29.0 Released

dotnet-exec 0.29.0 Released

作者头像
郑子铭
发布2025-07-16 15:24:39
发布2025-07-16 15:24:39
7300
代码可运行
举报
运行总次数:0
代码可运行

dotnet-exec 0.29.0 Released

Intro

dotnet-exec 是一个 dotnet tool 一个命令行小工具,可以帮助我们方便地执行 C# 代码,可以用来运行一些简单的 C# 程序而无需创建项目文件,让 C# 像 python/nodejs 一样简单,而且可以自定义项目的入口方法,支持但不限于 Main 方法。

dotnet-exec 0.29.0 发布了,新增了标准输入中代码的支持,以及通过支持 dotnet run file 新引入的 package 和 sdk 引用语法

Install

dotnet-exec 是一个 dotnet tool,可以使用安装 dotnet tool 的命令来安装

安装/更新最新稳定版本:

代码语言:javascript
代码运行次数:0
运行
复制
dotnet tool update -g dotnet-execute

安装最新的 preview 版本:

代码语言:javascript
代码运行次数:0
运行
复制
dotnet tool update -g dotnet-execute --prerelease

执行 dotnet-exec -h 或者 dotnet-exec --help 即可看到一些使用说明,更多使用可以参考文档

`dotnet-exec --help`

也可以通过 docker/podman 来在不安装 dotnet sdk 的情况下体验,例如:

代码语言:javascript
代码运行次数:0
运行
复制
docker run --rm weihanli/dotnet-exec:0.29.0 "ApplicationHelper.RuntimeInfo"
图片
图片

docker

如果在 GitHub Action 中使用又不想安装 dotnet-sdk 可以试试这个打包好的 github action

https://github.com/WeihanLi/dotnet-exec-action

代码语言:javascript
代码运行次数:0
运行
复制
- name:dotnet-execscript
uses:WeihanLi/dotnet-exec-action@0.29.0
with:
    script:"./build/build.cs"# script text or script path
    options:"--web --debug"# optional
    arguments:"target=test" # optional

Features

Stdin support

dotnet-exec 0.29.0 开始支持了 stdin 可以更好地支持脚本的管道模式(pipe)

使用方式如下:

代码语言:javascript
代码运行次数:0
运行
复制
'Guid.NewGuid' | dotnet-exec
图片
图片

`guid pipe`

代码语言:javascript
代码运行次数:0
运行
复制
cat hello.cs | dotnet-exec
图片
图片

`cat file pipe`

Run file directive support

.NET 10 preview 4 中的 dotnet run file 引入了一些新的语法,dotnet-exec 0.29.0 中有了一些初步的支持,比如 package 的引用和引用 Web SDK 以支持 ASP.NET Core

package reference sample

图片
图片

package reference

web sdk sample

图片
图片

web sdk sample

Implement

Stdin support

起初通过判断没有提供参数的时候从 Console.In 中读取,后来发现和 REPL 有点冲突,于是又改了下,改成下面这样判断就可以同时兼容 REPL 了

代码语言:javascript
代码运行次数:0
运行
复制
// try to read script content from stdin
var inputText = string.Empty;
if (Console.IsInputRedirected && Console.In.Peek() != -1)
{
    inputText = await Console.In.ReadToEndAsync();
}

if (string.IsNullOrEmpty(inputText))
{
    // start REPL when no input here
    await repl.RunAsync(options);
    return ;
}

Run file directive

之前的版本里我们已经支持第三方的脚本像是 linqpad 和 netpad,这里我们类似的将所有的文件都处理下,将文件开头的 #: 开头的

#: package 和 #: sdk 做一些处理,转成对应的 nuget package 引用和 ASP.NET Core 框架引用,具体实现细节可以参考代码

References

  • • https://github.com/WeihanLi/dotnet-exec
  • • https://www.nuget.org/packages/dotnet-execute/
  • • https://github.com/marketplace/actions/dotnet-exec
  • • https://github.com/WeihanLi/dotnet-exec-action
  • • https://weihanli.github.io/dotnet-exec/
  • • https://weihanli.github.io/dotnet-exec/ReleaseNotes.html
  • • https://github.com/WeihanLi/dotnet-exec/releases/tag/0.29.0
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet NB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • dotnet-exec 0.29.0 Released
    • Intro
    • Install
    • Features
      • Stdin support
      • Run file directive support
    • Implement
      • Stdin support
      • Run file directive
    • References
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档