Udostępnij za pomocą


tools.json na potrzeby odnajdywania wersji nuget.exe

Obecnie istnieje kilka sposobów uzyskania najnowszej wersji nuget.exe na maszynie w sposób skryptowy. Możesz na przykład pobrać i wyodrębnić pakiet NuGet.CommandLine z nuget.org. To zadanie jest nieco skomplikowane, ponieważ wymaga, abyś miał zainstalowany nuget.exe (dla nuget.exe install) lub musisz rozpakować plik .nupkg przy użyciu podstawowego narzędzia do rozpakowywania, aby znaleźć pliki binarne wewnątrz.

Jeśli masz już nuget.exe, możesz również użyć polecenia nuget.exe update -self, jednak wymaga to posiadania istniejącej kopii nuget.exe. To podejście aktualizuje cię również do najnowszej wersji. Nie zezwala na korzystanie z określonej wersji.

Punkt tools.json końcowy jest dostępny zarówno w celu rozwiązania problemu bootstrapu, jak i umożliwienia kontroli nad wersją nuget.exe, którą pobierasz. Można tego używać w środowiskach CI/CD lub w skryptach niestandardowych do odnajdywania i pobierania dowolnej opublikowanej wersji nuget.exe.

Punkt tools.json końcowy można pobrać przy użyciu nieautoryzowanego żądania HTTP (np. Invoke-WebRequest w programie PowerShell lub wget). Można go przeanalizować przy użyciu deserializatora JSON, a kolejne adresy URL pobierania nuget.exe można również uzyskać przy użyciu nieuwierzytelnionych żądań HTTP.

Punkt końcowy można pobrać przy użyciu GET metody :

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

Schemat JSON dla punktu końcowego jest dostępny tutaj:

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

Odpowiedź

Odpowiedź to dokument JSON zawierający wszystkie dostępne wersje nuget.exe.

Główny obiekt JSON ma następującą właściwość:

Name Typ Required
nuget.exe tablica obiektów yes

Każdy obiekt w tablicy nuget.exe ma następujące właściwości:

Name Typ Required Notatki
wersja ciąg yes Ciąg SemVer 2.0.0
URL ciąg yes Bezwzględny adres URL do pobrania tej wersji "nuget.exe".
etap ciąg yes Ciąg znaków typu enum
Przesłane ciąg yes Przybliżony znacznik czasu ISO 8601, kiedy wersja została udostępniona

Elementy w tablicy będą sortowane w kolejności malejącej SemVer 2.0.0. Ta gwarancja ma na celu zmniejszenie obciążenia klienta, który jest zainteresowany najwyższym numerem wersji. Oznacza to jednak, że lista nie jest sortowana w kolejności chronologicznej. Jeśli na przykład niższa wersja główna jest obsługiwana w dniu późniejszym niż wyższa wersja główna, ta wersja usługi nie będzie wyświetlana na początku listy. Jeśli chcesz uzyskać najnowszą wersję z znacznikiem czasu, po prostu posortuj tablicę według ciągu uploaded. Działa to, ponieważ uploaded znacznik czasu jest w formacie ISO 8601 , który można sortować chronologicznie przy użyciu sortowania leksykograficznego (tj. prostego sortowania ciągów).

Właściwość stage wskazuje, jak zweryfikowana jest ta wersja narzędzia.

Etap Meaning
EarlyAccessPreview Nie jest jeszcze widoczny na stronie internetowej pobierania i powinien zostać zweryfikowany przez partnerów
Wydano Dostępne w witrynie pobierania, ale nie jest jeszcze zalecane do szerokiego użycia
Wydany i Błogosławiony Dostępne w witrynie pobierania i jest zalecane do użycia

Jednym z prostych podejść do posiadania najnowszej, zalecanej wersji jest wybranie pierwszej wersji na liście, która ma stage wartość ReleasedAndBlessed. Działa to, ponieważ wersje są sortowane w kolejności SemVer 2.0.0.

Pakiet NuGet.CommandLine w nuget.org jest zwykle aktualizowany tylko przy użyciu ReleasedAndBlessed wersji.

Przykładowe żądanie

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

Przykładowa odpowiedź

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