用于发现 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 请求(例如在 PowerShell 中的Invoke-WebRequestwget)提取端点。 可以使用 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 对象具有以下属性:

Name 类型 必选
nuget.exe 对象数组 是的

数组中的每个 nuget.exe 对象具有以下属性:

Name 类型 必选 注释
版本 字符串 是的 SemVer 2.0.0 字符串
网址 字符串 是的 用于下载此版本 nuget.exe 的绝对 URL
暂存 字符串 是的 枚举字符串
上传 字符串 是的 ISO 8601格式的时间戳,表示版本大约何时可用

数组中的项将按照 SemVer 2.0.0 规范的降序排序。 此保证旨在减轻对最高版本号感兴趣的客户端的负担。 但是,这确实意味着列表不是按时间顺序排序的。 例如,如果较低版本的更新日期晚于较高版本的更新日期,那么这个已更新的版本将不会显示在列表顶部。 如果希望 按时间戳发布的最新版本,只需按 uploaded 字符串对数组进行排序。 这很有效,因为 uploaded 时间戳采用 ISO 8601 格式,可以使用字典排序(即简单的字符串排序)按时间顺序排序。

stage 属性指示此版本的工具的审查方式。

阶段 Meaning
早期访问预览 下载网页上 尚不可见,需要合作伙伴进行验证
已发布 在下载网站上可用,但不建议广泛使用
发布并祝福 在下载网站上可用,建议使用

使用最新推荐版本的一种简单方法是选择列表中第一个具有 stage 等于 ReleasedAndBlessed 的版本。 这很有效,因为版本按 SemVer 2.0.0 顺序排序。

nuget.org 上的 NuGet.CommandLine 包通常仅在 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"
        }
    ]
}