tools.json pro zjišťování verzí nuget.exe

Dnes existuje několik způsobů, jak získat nejnovější verzi nuget.exe na svém počítači skriptovatelným způsobem. Balíček si můžete například stáhnout a extrahovat NuGet.CommandLine z nuget.org. To má určitou složitost, protože buď vyžaduje, abyste již měli nuget.exe (pro nuget.exe install) nebo musíte rozbalit .nupkg pomocí základního rozbalení nástroje a najít binární soubor uvnitř.

Pokud již máte nuget.exe, můžete použít nuget.exe update -selftaké , ale to také vyžaduje mít existující kopii nuget.exe. Tento přístup vás také aktualizuje na nejnovější verzi. Nepovoluje použití konkrétní verze.

Koncový tools.json bod je k dispozici k řešení problému se spuštěním a k řízení verze nuget.exe, kterou stáhnete. Můžete ho použít v prostředí CI/CD nebo ve vlastních skriptech ke zjišťování a stahování všech vydaných verzí nuget.exe.

Koncový tools.json bod je možné načíst pomocí neověřeného požadavku HTTP (např. Invoke-WebRequest v PowerShellu nebo wget). Dá se analyzovat pomocí deserializátoru JSON a následné adresy URL pro stahování nuget.exe je možné načíst také pomocí neověřených požadavků HTTP.

Koncový bod je možné načíst pomocí GET metody:

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

Schéma JSON pro koncový bod je k dispozici tady:

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

Response

Odpověď je dokument JSON obsahující všechny dostupné verze nuget.exe.

Kořenový objekt JSON má následující vlastnost:

Name Type Požaduje se
nuget.exe pole objektů ano

Každý objekt v nuget.exe poli má následující vlastnosti:

Name Type Požaduje se Notes
version string ano Řetězec SemVer 2.0.0
url string ano Absolutní adresa URL pro stažení této verze nuget.exe
Fázi string ano Řetězec výčtu
Nahrané string ano Přibližné časové razítko ISO 8601, kdy byla k dispozici verze

Položky v poli budou seřazeny v sestupném pořadí SemVer 2.0.0. Tato záruka je určená ke snížení zátěže klienta, který má zájem o nejvyšší číslo verze. To ale znamená, že seznam není seřazený v chronologickém pořadí. Pokud je například nižší hlavní verze obsluhována později než vyšší hlavní verze, tato obsluhovaná verze se nezobrazí v horní části seznamu. Pokud chcete nejnovější verzi vydané podle časového razítka, jednoduše seřaďte pole podle uploaded řetězce. To funguje, protože uploaded časové razítko je ve formátu ISO 8601 , který lze řadit chronologicky pomocí lexikálního řazení (tj. jednoduchého řazení řetězců).

Vlastnost stage označuje, jak je tato verze nástroje prověřena.

Fáze Význam
EarlyAccessPreview Na webové stránce ke stažení ještě není vidět a měli by je ověřit partneři.
Vydáno K dispozici na webu pro stahování, ale zatím se nedoporučuje pro široké využití
VydánoAndBlessed K dispozici na webu pro stahování a doporučuje se ke spotřebě.

Jedním z jednoduchých přístupů pro nejnovější doporučenou verzi je vzít první verzi v seznamu, která má stage hodnotu ReleasedAndBlessed. To funguje, protože verze jsou seřazené v pořadí SemVer 2.0.0.

Balíček NuGet.CommandLine na nuget.org se obvykle aktualizuje pouze verzemi ReleasedAndBlessed .

Ukázkový požadavek

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

Ukázková odpověď

{
    "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"
        }
    ]
}