大数跨境
0
0

dotnet-exec 0.22.0 Released 及近期更新

dotnet-exec 0.22.0 Released 及近期更新 amazingdotnet
2024-07-21
1
导读:dotnet-exec 0.22.0 Released 及近期更新

dotnet-exec 0.22.0 Released 及近期更新

Intro

好久没有同步 dotnet-exec 的更新了,今天想和大家分享一下 dotnet-exec 的最近的一些更新,目前最新的版本是 0.22.0 版本,总结一下从 0.19.0 版本到现在的一些更新

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

Multi scripts enhancements

之前多个 script 的时候需要通过 --ad/--addition option 来设置更多的 script,使用起来有所不便,也有小伙伴反馈多个脚本的时候使用起来不方便,所以在 0.19.0 版本中优化了一下多个 script 的支持,可以直接通过多个 script 来

multiple scripts

Script reference support

之前的版本对于 C# script( csx) 的支持比较简单,从 0.19.0 版本开始支持解析 csx 中的 #r 的引用

支持了本地文件以及 nuget package 引用

#r "nuget: WeihanLi.Npoi, 2.4.2"

Console.WriteLine(WeihanLi.Npoi.CsvHelper.GetCsvText(new[]{ 123 }));

比如这样的文件,输出结果如下:

script reference sample

Web References Env

如果你使用 docker image 使用 :web tag 的时候会自动引用 asp.net core 框架引用,以及引用 web 默认的命名空间引用,之前需要使用 --web 选项,现在不需要了,省了一个 option 的配置

docker run --rm --pull=always weihanli/dotnet-exec:web "WebApplication.Create().Run();"

web references env

Respect Environment.ExitCode

之前的版本没有处理 Environment.ExitCode,如果代码里设置了 exit code 设置了 1 ,程序执行没有出错,实际的 exit code 会是 0,并没有 respect Environment.ExitCode,从 0.20.0 版本

Environment.ExitCode sample

Linqpad/Netpad script execute

除了 C# 项目里的代码,有时候也会执行 linqpad script,最近也有一个开源的 NetPad,它的 script 和 linqpad 略有不同,也支持了一下,现在可以使用 dotnet-exec 来执行这些脚本,因为 Linq 有一些 linqpad 的扩展,目前只支持比较简单 Dump 其他扩展暂不支持,有需要的小伙伴也可以来欢迎来提 issue & PR

dotnet-exec LinqpadSample.linq
dotnet-exec NetpadSample.netpad

third-party script sample

REPL

0.22.0 版本中比较一个重要的更新是支持了一个简单的 REPL(Read Evaluate Print Loop),当没有参数提供的时候默认会启动 REPL, 也可以在启动的时候传入一些默认的引用,命名空间等设置

repl basics

在遇到不熟悉的 API  的时候也可以通过在代码最后加入一个问号 ? 来获取代码提示(目前代码提示做的不太好,没有 inline 的 code completion,后面看大家需要再做优化吧,也可以先使用 csharprepl 项目,会有 inline 的 code completion 代码提示效果更好),如上图中的最后一个输入是 Guid.New?,代码提示是 NewGuid

我们也可以通过 #r nuget:<packageId[,packageVersion]> 来引用一个 nuget package,效果如下:

repl package reference

通过 #q/#exit 来退出 REPL,通过 #cls/#clear 来清除屏幕

启动时添加 web 框架引用

访问 web api

More

感觉有一些功能并没有在文档里体现出来,最近基于 docfx 搭建了一个文档站点,目前基于 github pages 部署了:

https://weihanli.github.io/dotnet-exec/index.html

后面有空再完善下文档

References

  • https://github.com/WeihanLi/dotnet-exec
  • https://www.nuget.org/packages/dotnet-execute/
  • https://weihanli.github.io/dotnet-exec/
  • https://weihanli.github.io/dotnet-exec/ReleaseNotes.html
  • https://github.com/WeihanLi/dotnet-exec/issues/17
  • https://github.com/WeihanLi/dotnet-exec/issues/20
  • https://github.com/WeihanLi/dotnet-exec/issues/21


【声明】内容源于网络
0
0
amazingdotnet
dotnet 开发知识库,了不起的 dotnet,dotnet 奇淫怪巧
内容 539
粉丝 0
amazingdotnet dotnet 开发知识库,了不起的 dotnet,dotnet 奇淫怪巧
总阅读131
粉丝0
内容539