dotnet-exec 0.18.0 Released
Intro
dotnet-exec
是一个 dotnet tool 一个命令行小工具,可以帮助我们方便地执行 C# 代码,可以用来运行一些简单的 C# 程序而无需创建项目文件,让 C# 像 python/nodejs 一样简单,而且可以自定义项目的入口方法,支持但不限于 Main 方法。
0.18.0
开始支持了 .NET 9 框架,可以用来测试一些 .NET 9 的一些 API
Install/Update
dotnet-exec
是一个 dotnet tool,可以使用安装 dotnet tool 的命令来安装
安装/更新最新稳定版本:
dotnet tool update -g dotnet-execute
安装最新的 preview 版本:
dotnet tool update -g dotnet-execute --prerelease
执行
dotnet-exec -h
或者
dotnet-exec --help
即可看到一些使用说明
也可以通过 docker/podman 来在不安装 dotnet sdk 的情况下体验,例如:
docker run --rm --pull=always weihanli/dotnet-exec:0.18.1 "ApplicationHelper.RuntimeInfo"
Features
net9.0
target support
这一版本中新增了
net9.0
的 target,安装了 .NET 9 SDK 的环境在安装 tool 的时候就会自动使用 .NET 9 target
从这一版本开始 docker image 也从之前 .NET 8 升级到了 .NET 9
Export compile result
这一版本中新增了
--compile-out
来导出编译的 dll,可以指定一个目录,或者一个具体的文件名,示例如下:
Multi-platform container image
从这一版本开始支持了多平台的容器镜像,之前的版本只支持 linux/amd64 架构,0.18.0 版本新增支持了
linux/arm64
和
linux/arm
linux/amd64 架构镜像的示例
arm64 架构镜像的示例
大家如果有树莓派之类的 arm 架构的设备也可以试一下哈
Enhancements
ProjectReference
enhancement
ProjectReference
的原理是 build 项目文件并引用 build 之后生成的程序集,但是最近在使用的过程中发现有时候会有文件占用的报错,重试大概率会成功,导致 CI 偶尔会报错,于是在 build project 的逻辑加了自动 retry,最多 retry 5 次,这样大大提高了 project reference 的成功率,加了 retry 之后,CI 就没再报错了
System.Net.Http.Json
namespace using
最近觉得
System.Net.Http.Json
这个命名空间还是蛮常用的,所以考虑默认包含了这个命名空间,这样在使用
GetFromJsonAsync
/
PostAsJsonAsync
等方法时就可以不再需要加命名空间了
如果你遇到了命名空间冲突的问题,也可以使用
--using "-System.Net.Http.Json"
来移除这个命名空间引用
More
在发布了 0.18.0 之后,早上发现 Roslyn 发布了一个新版本还是一个稳定版本,于是升级了一个小版本
0.18.1
这一版本和
0.18.0
的功能一致,只是 Roslyn 的版本升级了一下
References
https://github.com/WeihanLi/dotnet-exec
https://www.nuget.org/packages/dotnet-execute/
https://hub.docker.com/r/weihanli/dotnet-exec
https://github.com/WeihanLi/dotnet-exec/compare/0.17.0...0.18.0
https://github.com/WeihanLi/dotnet-exec/compare/0.18.0...0.18.1