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