Condividi tramite


tools.json per l'individuazione delle versioni di nuget.exe

Attualmente, esistono alcuni modi per ottenere la versione più recente di nuget.exe nel computer in modo scriptabile. Ad esempio, è possibile scaricare ed estrarre il NuGet.CommandLine pacchetto da nuget.org. Questa situazione presenta una certa complessità perché richiede già di avere nuget.exe (per nuget.exe install) oppure è necessario decomprimere il file con estensione nupkg usando uno strumento di decompressione di base e trovare il file binario all'interno.

Se si dispone già di nuget.exe, è anche possibile usare nuget.exe update -self, ma ciò richiede anche la presenza di una copia esistente di nuget.exe. Questo approccio aggiorna anche l'utente alla versione più recente. Non consente l'uso di una versione specifica.

L'endpoint tools.json è disponibile sia per risolvere il problema di bootstrap che per fornire il controllo della versione di nuget.exe scaricata. Può essere usato in ambienti CI/CD o in script personalizzati per individuare e scaricare qualsiasi versione rilasciata di nuget.exe.

L'endpoint tools.json può essere recuperato usando una richiesta HTTP non autenticata , ad esempio Invoke-WebRequest in PowerShell o wget. Può essere analizzato usando un deserializzatore JSON e gli URL di download successivi nuget.exe possono essere recuperati anche usando richieste HTTP non autenticate.

L'endpoint può essere recuperato usando il GET metodo :

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

Lo schema JSON per l'endpoint è disponibile qui:

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

Risposta

La risposta è un documento JSON contenente tutte le versioni disponibili di nuget.exe.

L'oggetto JSON radice ha la proprietà seguente:

Nome TIPO Obbligatorio
nuget.exe matrice di oggetti yes

Ogni oggetto nella nuget.exe matrice ha le proprietà seguenti:

Nome TIPO Obbligatorio Note
version corda yes Stringa SemVer 2.0.0
URL corda yes URL assoluto per il download di questa versione di nuget.exe
stage corda yes Stringa di enumerazione
Caricato corda yes Timestamp ISO 8601 approssimativo di quando la versione è stata resa disponibile

Gli elementi nella matrice verranno ordinati in ordine decrescente, SemVer 2.0.0. Questa garanzia è destinata a ridurre il carico di un client interessato al numero di versione più alto. Ciò significa tuttavia che l'elenco non è ordinato in ordine cronologico. Ad esempio, se una versione principale inferiore viene usata in una data successiva a una versione principale superiore, questa versione di servizio non verrà visualizzata nella parte superiore dell'elenco. Se si desidera ottenere la versione più recente rilasciata al timestamp, è sufficiente ordinare l'array per la stringa uploaded. Questo funziona perché il uploaded timestamp è nel formato ISO 8601 che può essere ordinato cronologicamente usando un ordinamento lessicografico (ad esempio un semplice ordinamento di stringhe).

La stage proprietà indica come è stata esaminata questa versione dello strumento.

Fase Meaning
Anteprima di Accesso Anticipato Non ancora visibile nella pagina Web di download e deve essere convalidata dai partner
Rilasciato Disponibile nel sito di download, ma non è ancora consigliato per un consumo diffuso
RilasciatoEBenedetto Disponibile nel sito di download ed è consigliato per l'utilizzo

Un approccio semplice per avere la versione più recente e raccomandata consiste nel prendere la prima versione nell'elenco che ha il stage valore di ReleasedAndBlessed. Questa operazione funziona perché le versioni sono ordinate in ordine SemVer 2.0.0.

Il NuGet.CommandLine pacchetto su nuget.org viene in genere aggiornato solo con le versioni ReleasedAndBlessed.

Esempio di richiesta

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

Risposta di esempio

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