目前,可通过几种方法以可编写脚本的方式在计算机上获取最新版本的 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-WebRequest或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 对象具有以下属性:
| 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"
}
]
}