当前位置: 欣欣网 > 码农

dotnet tool list json output

2024-04-02码农

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 :

dotnet tool list --global output

没有指定 format 的时候会沿用之前的输出结果,会输出一个 table

可以指定 --format=json 来输出 json

dotnet tool list --global --format=json

global tool list json output

以上是 global tool list 的示例,也支持 local tool list,来看一个例子

local tool list json output

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