tools.json per l'individuazione delle versioni di nuget.exe
Oggi, 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
Response
La risposta è un documento JSON contenente tutte le versioni disponibili di nuget.exe.
L'oggetto JSON radice ha la proprietà seguente:
Nome | Digita | Obbligatorio |
---|---|---|
nuget.exe | matrice di oggetti | yes |
Ogni oggetto nella nuget.exe
matrice ha le proprietà seguenti:
Nome | Digita | Obbligatorio | Note |
---|---|---|---|
versione | string | yes | Stringa SemVer 2.0.0 |
URL. | string | yes | URL assoluto per il download di questa versione di nuget.exe |
fase | string | yes | Stringa di enumerazione |
Caricato | string | 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 vuole che la versione più recente rilasciata dal timestamp, è sufficiente ordinare la matrice in base alla uploaded
stringa. 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 | Significato |
---|---|
EarlyAccessPreview | 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 |
ReleasedAndBlessed | Disponibile nel sito di download ed è consigliato per l'utilizzo |
Un approccio semplice per avere la versione più recente consigliata consiste nell'accettare la prima versione nell'elenco con il stage
valore di ReleasedAndBlessed
. Questa operazione funziona perché le versioni sono ordinate in ordine SemVer 2.0.0.
Il NuGet.CommandLine
pacchetto in nuget.org viene in genere aggiornato solo con ReleasedAndBlessed
le versioni.
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"
}
]
}