共用方式為


用於探索 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版本。

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

可以使用以下 GET 方法提取端點:

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

端點的 JSON結構描述 可在此處取得:

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

回應

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

根 JSON 物件具有下列屬性:

名稱 類型 為必填項目
nuget.exe 物件的陣列 yes

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

名稱 類型 為必填項目 註釋
版本 字串 yes SemVer 2.0.0 字串
url 字串 yes 下載此版本 nuget.exe 的絕對 URL
暫存 字串 yes 列舉字串
已上傳 字串 yes 版本提供時的近似 ISO 8601 時間戳記

陣列中的項目將以遞減的 SemVer 2.0.0 順序排序。 此保證旨在減輕對最高版本號感興趣的客戶端的負擔。 然而,這確實意味著該列表不是按時間順序排序的。 例如,如果服務日期晚於較高主要版本,則此服務版本將不會顯示在清單頂端。 如果您想要按 時間戳記發布的最新版本,只需按字串對 uploaded 陣列進行排序即可。 這有效,因為 uploaded 時間戳記採用 ISO 8601 格式,可以使用字典排序(即簡單的字串排序)按時間順序排序。

屬性指出 stage 此版本的工具經過審查的程度。

階段 Meaning
搶先預覽 尚未 在下載網頁 上顯示,應由合作夥伴驗證
已發行 可在下載網站上找到,但尚不建議廣泛使用
釋放和祝福 可在下載網站上取得,建議下載或使用

取得最新的建議版本的一個簡單方法是選擇清單中第一個具有 stage 值的 ReleasedAndBlessed 版本。 這有效,因為版本會依 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"
        }
    ]
}