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
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.
GET https://dist.nuget.org/tools.json
{
"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"
}
]
}