分享方式:


用於探索nuget.exe版本的tools.json

今天,有幾種方式可以透過可編寫腳本的方式,在您的計算機上取得最新版本的 nuget.exe。 例如,您可以從 nuget.org 下載並擷取 NuGet.CommandLine 套件。這有一些複雜度,因為它需要您已經有nuget.exe (for nuget.exe install) 或您必須使用基本解壓縮工具解壓縮 .nupkg,並在裡面尋找二進制檔。

如果您已經有nuget.exe,您也可以使用 nuget.exe update -self,但這也需要有現有的nuget.exe複本。 此方法也會將您更新為最新版本。 它不允許使用特定版本。

端點 tools.json 可用來解決啟動載入問題,並讓您控制您下載nuget.exe的版本。 這可用於 CI/CD 環境或自定義腳本中,以探索和下載任何發行版本的 nuget.exe。

tools.json您可以使用未經驗證的 HTTP 要求來擷取端點(例如Invoke-WebRequest在 PowerShell 或 wget中)。 您可以使用 JSON 還原串行化程式剖析它,後續nuget.exe下載 URL 也可以使用未經驗證的 HTTP 要求來擷取。

您可以使用 方法擷取 GET 端點:

GET https://dist.nuget.org/tools.json

端點的 JSON 架構可在這裡取得:

GET https://dist.nuget.org/tools.schema.json

回應

回應是 JSON 檔,其中包含所有可用的nuget.exe版本。

根 JSON 物件具有下列屬性:

名稱 類型​​ 必要
nuget.exe 物件陣列

陣列中的每個 nuget.exe 物件都有下列屬性:

名稱 類型​​ 必要 備註
version string SemVer 2.0.0 字串
URL string 下載此版本的絕對 URL nuget.exe
之後 string 列舉字串
上傳 string 當版本可供使用時的大約 ISO 8601 時間戳

陣列中的專案會以遞減、SemVer 2.0.0 順序排序。 此保證旨在減輕對最高版本號碼感興趣之客戶端的負擔。 不過,這表示清單不會依時間順序排序。 例如,如果較晚於較高主要版本的日期提供服務,則此服務版本不會出現在清單頂端。 如果您想要依 時間戳發行的最新版本,只要依 uploaded 字串排序陣列即可。 這可運作,因為 uploaded 時間戳採用 ISO 8601 格式,可使用語匯排序以時間順序排序(亦即簡單的字串排序)。

屬性 stage 會指出這個工具版本的審查方式。

階段 意義
EarlyAccessPreview 尚未顯示在 下載網頁上 ,且應由合作夥伴驗證
已發行 可在下載網站上使用,但尚未建議用於廣泛使用量
ReleasedAndBlessed 可在下載網站上取得,建議使用

具有最新建議版本的其中一個簡單方法是採用清單中具有 stageReleasedAndBlessed的第一個版本。 這可運作,因為版本是以 SemVer 2.0.0 順序排序。

NuGet.CommandLine nuget.org 上的套件通常只會使用ReleasedAndBlessed版本更新。

範例要求

GET https://dist.nuget.org/tools.json

範例回應

{
    "nuget.exe": [
        {
            "version": "4.8.0-preview3",
            "url": "https://dist.nuget.org/win-x86-commandline/v4.8.0-preview3/nuget.exe",
            "stage": "EarlyAccessPreview",
            "uploaded": "2018-07-06T23:00:00.0000000Z"
        },
        {
            "version": "4.7.1",
            "url": "https://dist.nuget.org/win-x86-commandline/v4.7.1/nuget.exe",
            "stage": "ReleasedAndBlessed",
            "uploaded": "2018-08-10T23:00:00.0000000Z"
        },
        {
            "version": "4.6.1",
            "url": "https://dist.nuget.org/win-x86-commandline/v4.6.1/nuget.exe",
            "stage": "Released",
            "uploaded": "2018-03-22T23:00:00.0000000Z"
        },
        {
            "version": "3.5.0",
            "url": "https://dist.nuget.org/win-x86-commandline/v3.5.0/nuget.exe",
            "stage": "ReleasedAndBlessed",
            "uploaded": "2016-12-19T15:30:00.0000000-08:00"
        },
        {
            "version": "2.8.6",
            "url": "https://dist.nuget.org/win-x86-commandline/v2.8.6/nuget.exe",
            "stage": "ReleasedAndBlessed",
            "uploaded": "2015-09-01T12:30:00.0000000-07:00"
        }
    ]
}