dotnet-install v0.2.0 发布了
dotnet-install v0.2.0 发布了
Intro
dotnet-install是完全使用 C# 基于 dotnet-install script 实现的 Native AOT 版本的 dotnet SDK 安装工具,可以参考之前的介绍 ,最近把dotnet-install更新到了v0.2.0。
Install
可以通过 dotnet tool 来安装
dotnet tool update -g spark.dotnet-install或者从 GitHub release 下载可执行文件
Problems
最开始做这个工具,更多还是希望把 .NET 安装这件事变得更简单一点,但实际用下来会发现,光“安装”还不够。真正进入日常使用之后,接下来马上会遇到几个问题:
• 装了新版本以后,旧版本怎么处理? Windows 上 installer 会自动卸载老版本但是 mac 上不会,能不能也实现自动移除?
• 工具本身更新了,怎么更方便地升级?
• 在 老版本的基于 intel 的 mac x64 和 alpine 环境里能不能也支持开箱即用的二进制文件?
所以v0.2.0这一版,就放在这些问题上了
upgrade:不只是安装新版本,而是真正完成升级
这次新增的upgrade命令,是我觉得比较实用的一个能力,它做的事情不是单纯“再安装一个版本”,而是会去安装目标 SDK / Runtime 版本,同时清理同一个 channel 里已经过时的旧版本, 并且在清理时复用已有的remove的功能,老版本的 sdk 和 runtime 可以一起清理,如果需要保留 runtime,也可以--sdk-only去只移除 sdk。如果只是想升级 runtime 不安装 sdk,可以指定--runtime选项。
如果已经安装了最新的版本就不会再进行安装,会跳过安装,提示已经安装了最新版本
dotnet-install upgrade 10.0.x同样地,这个命令也支持--dry-run选项来只预览不下载和更新
dotnet-install upgrade 10.0.x --dry-run也支持同时指定多个版本,一次更新多个版本:
dotnet-install upgrade 10.0.x 11.0.xself-update:让工具自己也更容易维护
另外一个更新是self-update
有了这个命令以后,dotnet-install可以直接从 GitHub Releases 更新自身,不需要再手动下载、替换可执行文件。
当工具本身能够自己更新的时候,后续迭代和分发都会方便很多,用户也更容易跟上新版本。
这个主要针对直接使用 Github release artifacts 的用户的,使用 dotnet tool 的用户仍然可以通过dotnet tool update来进行更新
More Platforms
这次还补充了几个新的目标平台:
•
linux-musl-x64•
linux-musl-arm64•
osx-x64
加上这些之后,v0.2.0目前提供的二进制文件已经覆盖:
• Linux x64
• Linux ARM64
• Linux musl x64
• Linux musl ARM64
• macOS x64
• macOS ARM64
• Windows x64
• Windows ARM64
在musl Linux的支持方面这里折腾的比较久,最开始想基于 ubuntu arm runner 来实现折腾了好久没折腾出来,最后通过 Github Action 的自定义容器镜像,基于 .NET SDK alpine-aot 的 image 来实现了支持,在 alpine container 里构建出来 alpine 的目标产物,也发现了有些 Github Action 不支持 arm runner 只支持 x64 架构的,通过最原始的 git 和 github-cli 来做了一些 workaround 最终实现了
More
如果你对这个工具感兴趣,欢迎体验、提 Issue、提 PR,或者直接反馈你的使用场景。
这些功能其实都是在真实使用过程中,慢慢发现“还差一点”的地方,一点点补起来的,也希望这个工具后面能继续变得更实用一些。
如果你在使用 GitHub Action 升级时有一点需要注意,0.2.0 版本的 tag 加了一个 v 前缀,和其他的 github action 保持一致
- - uses: WeihanLi/dotnet-install@0.1.0 + - uses: WeihanLi/dotnet-install@v0.2.0References
• https://github.com/WeihanLi/dotnet-install
• https://github.com/marketplace/actions/install-dotnet
• https://www.nuget.org/packages/spark.dotnet-install
• https://github.com/WeihanLi/dotnet-install/releases/tag/v0.2.0
