dotnet tool list json output
Intro
dotnet tool 的管理一直没有比较好的批量更新的机制,于是自己尝试写了一个小工具,更新所有的 dotnet tool
dotnet tool list 的命令在 .NET 8 以及之前的版本中只能输出到 console 一个 table,在 .NET 9 中尝试提了一个 PR 支持了输出一个 json,table 的格式并没有严格的说明,后面的 release 可能会和之前的输出结果不兼容,json 格式更为固定,兼容性更好,最近针对 .NET 9 的版本也改造了一下,通过输出的 json 来获取已经安装的 dotnet tool 信息
Sample
纯文字的介绍可能看着会有点懵,来看下带图的示例会比较方便的理解在说什么
执行
dotnet tool list --global
:
没有指定 format 的时候会沿用之前的输出结果,会输出一个 table
可以指定
--format=json
来输出 json
dotnet tool list --global --format=json
以上是 global tool list 的示例,也支持 local tool list,来看一个例子
UpdateAllTools tool
dotnet-update-all-tools
是一个用来更新所有 dotnet tool 的 dotnet tool
可以通过
dotnet tool update --global dotnet-update-all-tools
来安装/更新到最新的一个版本,通过
dotnet-update-all-tools
/
dotnet-update-all-tools --local
来更新所有的 global tool 或者 local tool
之前的版本是读取
dotnet tool list --global
每一行的输出来获取安装的 dotnet tool ,支持了 json 之后就可以直接读取输出再进行 json 反序列化操作获取到所有的 dotnet tool 了,如果通过 json 输出获取失败则可以再回到读取 table 输出的逻辑
具体变更可以参考:https://github.com/WeihanLi/SamplesInPractice/commit/7450647a365100f8e7726a70665b6be9df071899
More
如果你之前也有之前读取 dotnet tool list 的输出结果的操作,在 .NET 9 里可以考虑下 json 输出也许可以帮你简化一些操作
同时关于更新所有 dotnet tool 的需求,目前已经有人在做了,有可能会在 .NET 9 里集成到 sdk 中去,想关注的朋友可以参考或订阅 PR:https://github.com/dotnet/sdk/pull/38996
References
https://github.com/dotnet/sdk/issues/19650#issuecomment-1833280431
https://github.com/dotnet/sdk/issues/37239
https://github.com/dotnet/sdk/pull/37394
https://github.com/WeihanLi/SamplesInPractice/blob/main/CommandLineAppSamples/UpgradeAllTools/Program.cs
https://github.com/WeihanLi/SamplesInPractice/commit/7450647a365100f8e7726a70665b6be9df071899
https://github.com/dotnet/sdk/issues/37237