dotnet-exec 0.16.0 Released

dotnet-exec 0.16.0 Released

Intro

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

0.16.0 版本是 2024 年的第一个新版本,也是支持自定义 nuget 源的第一个版本,还有哪些更新我们一起来看下吧

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 即可看到一些使用说明

bd3c04240b8d976eaf7a4f2f743809ad.png

dotnet-exec help

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

docker run --rm --pull=always weihanli/dotnet-exec:latest dotnet-exec "ApplicationHelper.RuntimeInfo"

319b6363085b5bb43e9755b9afde8ed3.png

docker

New features

NuGet Config support

在之前的版本中,我们只支持 nuget.org 上的 nuget package,在这一版本中我们会根据 nuget 的配置来查找 nuget source,而不再是只用 nuget.org 了

这样我们如果需要用到一些不在 nuget.org 中 publish 的一些 package 也变得可能,也可以支持私有的 nuget 源了

默认我们会从当前目录找 nuget.config,我们也可以通过 --nuget-config 来手动指定一个特殊位置的一个 nuget.config

大家可以自己尝试一下

dry-run option

新版本中支持了 --dry-run,可以使用这一选项来快速测试脚本编译是否有编译问题,只编译不执行

4b8bdc1995b410c9c79ceec84c584365.png

dry-run sample 

我们再加一个 using

2a6a7cd98d28e6bf6963fa15f5c1c8c4.png

dry-run sample2

可以看到编译结束之后就完成了,并没有执行,如果没有 --dry-run 这个 option 就会执行我们的代码

1dd35e031a2fccd129dda6fb8b0400b4.png

without --dry-run

env option

在之前的版本中其实我们已经可以支持通过 directive 的方法指定环境变量,比如

dotnet-exec [env:name=test] '$"Hello {Environment.GetEnvironmentVariable("name")}".Dump();'

cd0cb3f18a1b4e247ed990b25244d88f.png

env-directive

但是有些朋友用起来会觉得有些不习惯不方便,所以我们新增加一个 --env option,我们就可以像其他参数一样进行设置

dotnet-exec '$"Hello {Environment.GetEnvironmentVariable("name")}".Dump();' --env name=test

8d83d61154ebdefa733ea77ef5523cc6.png

--env option

-- command arguments

在之前的版本中,我们可以通过 --args option 来设置 script 里的命令行参数 args,但是我们使用的时候有点不便,比如:--args "--target hello"

多个参数的时候必须要写在一个参数里,所以我们参考别的项目引入了 -- ,在 -- 后面的参数都认为是命令行参数

前面的命令就可以变成为 -- --target hello9c6f7e320098bc6ba949d64eb9cd3ced.png

More

在之前的版本中在 Linux 平台上 config profile  的目录会和 dotnet tool 发生冲突,这一版本修改了 config profile 目录来避免这一问题

如果你有较多的 profile 配置需要迁移可以将 %USERPROFILE%/.dotnet/tools 目录下的 dotnet-exec 目录移动到 .config 目录下(如果没有需要手动新建一个),最后通过 dotnet-exec profile ls 来验证是否迁移成功

之前的版本可能会因为 reference 引用的格式不同导致重复添加引用,这一版本中做了一些优化,会先做引用格式做统一处理,之后再添加引用从而比较重复引用,比如说:

var code = """
// r: nuget:WeihanLi.Common,1.0.60
// r: nuget: WeihanLi.Common,1.0.60
// r: nuget: WeihanLi.Common, 1.0.60
// r: "nuget: WeihanLi.Common, 1.0.60"
Console.WriteLine("Hello World!");
""";
var options = new ExecOptions()
{
    Script = code,
    DryRun = true,
};
await _handler.Execute(options);
Assert.Single(options.References);

这些 reference 的不同格式最终生效的只有一个因为我们引用是相同的

最后之前我们利用 cake 来实现 CI 过程的处理,在这个版本中我们使用 C# 代码 + dotnet-exec 来取代了 cake,也在其他项目上做了一些尝试,这样的好处在于可以使用自己熟悉的语言和 API 来自定义处理,后面再具体分享示例

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.15.0...0.16.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值