Sdílet prostřednictvím


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 nástroje pro rozbalení a najít binární soubor uvnitř.

Pokud již máte nuget.exe, můžete také použít nuget.exe update -self, 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. To lze použít v prostředí CI/CD nebo ve vlastních skriptech ke zjišťování a stahování libovolné vydané verze 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

Odezva

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

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

Název Typ Povinné
nuget.exe pole objektů yes

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

Název Typ Povinné Poznámky
verze řetězec yes Řetězec SemVer 2.0.0
adresa URL řetězec yes Absolutní adresa URL pro stažení této verze nuget.exe
fáze řetězec yes Řetězec výčtu
Nahrané řetězec yes Přibližný časový údaj v ISO 8601, kdy byla verze zpřístupněna

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.

Etapa Meaning
Raná Verze Přístupu Na webové stránce ke stažení ještě není viditelná a měli by ji ověřit partneři.
Uvolněno K dispozici na webu pro stahování, ale zatím se nedoporučuje pro široké využití
Vydáno a Posvěceno K dispozici na webu pro stahování a doporučuje se ke spotřebě.

Jednoduchým přístupem k získání nejnovější doporučené verze je vzít první verzi v seznamu, která má 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"
        }
    ]
}