當前位置: 妍妍網 > 碼農

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