Udostępnij za pośrednictwem


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ć NuGet.CommandLine pakiet z nuget.org. Ma to pewną złożoność, ponieważ wymaga to, aby masz już nuget.exe (dla nuget.exe install) lub musisz rozpakować plik nupkg przy użyciu podstawowego narzędzia rozpakowywania i znaleźć plik binarny wewnątrz.

Jeśli masz już nuget.exe, możesz również użyć nuget.exe update -selfpolecenia , jednak wymaga to również 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, aby rozwiązać problem z uruchamianiem i zapewnić kontrolę nad wersją nuget.exe, którą pobierasz. Może to być używane w środowiskach ciągłej integracji/ciągłego wdrażania lub w skryptach niestandardowych do odnajdywania i pobierania dowolnej wydanej wersji nuget.exe.

Punkt tools.json końcowy można pobrać przy użyciu nieuwierzytelnionego żądania HTTP (np. Invoke-WebRequest w programie PowerShell lub wget). Można go przeanalizować przy użyciu deserializacji JSON, a kolejne nuget.exe adresy URL pobierania można również pobrać 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

Response

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

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

Nazwisko Type Wymagania
nuget.exe tablica obiektów tak

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

Nazwisko Type Wymagania Uwagi
version string tak Ciąg SemVer 2.0.0
Adres URL string tak Bezwzględny adres URL pobierania tej wersji nuget.exe
etap string tak Ciąg wyliczenia
Przesłane string tak 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, aby najnowsza wersja została wydana przez znacznik czasu, po prostu posortuj tablicę uploaded według ciągu. 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 Znaczenie
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
WydanyAndBlessed Dostępne w witrynie pobierania i jest zalecane do użycia

Jednym z prostych podejść do posiadania najnowszej, zalecanej wersji jest użycie 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"
        }
    ]
}