tools.json para descubrir versiones de nuget.exe
En la actualidad, existen diversas formas de obtener la última versión de nuget.exe en la máquina de forma que se puedan crear secuencias de comandos. Por ejemplo, puedes descargar y extraer el paquete NuGet.CommandLine
de nuget.org. Esto resulta un poco complejo, ya que debes tener nuget.exe (para nuget.exe install
) o descomprimir el .nupkg mediante una herramienta de descompresión básica y buscar el archivo binario dentro.
Si ya tienes nuget.exe, también puedes utilizar nuget.exe update -self
; no obstante, en este caso es necesario disponer de una copia de nuget.exe ya instalada. Este enfoque también permite actualizar a la última versión. Lo que no permite es utilizar una versión específica.
El punto de conexión de tools.json
está disponible para resolver el problema de arranque y para que puedas controlar la versión de nuget.exe que descargues. Lo puedes utilizar en entornos de CI/CD o en secuencias de comandos personalizadas para descubrir y descargar cualquier versión publicada de nuget.exe.
El punto de conexión de tools.json
se puede capturar mediante una solicitud HTTP no autenticada (por ejemplo, Invoke-WebRequest
en PowerShell o wget
). Se puede analizar por medio de un deserializador JSON, y las direcciones URL de descarga de nuget.exe posteriores también se pueden capturar mediante solicitudes HTTP no autenticadas.
Es posible capturar el punto de conexión a través del método GET
:
GET https://dist.nuget.org/tools.json
El esquema JSON del punto de conexión está disponible aquí:
GET https://dist.nuget.org/tools.schema.json
La respuesta es un documento JSON que contiene todas las versiones disponibles de nuget.exe.
El objeto JSON raíz tiene la siguiente propiedad:
Nombre | Type | Obligatorio |
---|---|---|
nuget.exe | matriz de objetos | sí |
Cada objeto de la matriz nuget.exe
tiene las siguientes propiedades:
Nombre | Type | Obligatorio | Notas |
---|---|---|---|
version | string | sí | Una cadena SemVer 2.0.0 |
url | string | sí | Una dirección URL absoluta para descargar esta versión de nuget.exe |
fase | string | sí | Cadena de enumeración |
cargada | string | sí | Marca de tiempo ISO 8601 aproximada que indique desde cuándo está disponible la versión |
Los elementos de la matriz se ordenarán en orden descendente de SemVer 2.0.0. Esta garantía está pensada para reducir la carga de un cliente interesado en el número de versión más alto. Sin embargo, en este caso, la lista no se ordenará en orden cronológico. Por ejemplo, si se ofrece una versión principal inferior en una fecha posterior a una versión principal superior, esta versión inferior no aparecerá en la parte superior de la lista. Si deseas la última versión publicada por marca de tiempo, solo tienes ordenar la matriz por la cadena uploaded
. Este acción funciona porque la marca de tiempo uploaded
está en formato ISO 8601, el cual se puede ordenar cronológicamente mediante una ordenación lexicográfica (es decir, una ordenación de cadena simple).
La propiedad stage
indica cómo se examina esta versión de la herramienta.
Fase | Significado |
---|---|
EarlyAccessPreview | Todavía no está visible en la página web de descarga y deben validarla los asociados |
Publicado | Disponible en el sitio de descarga, pero aún no se recomienda para el consumo de amplia distribución |
ReleasedAndBlessed | Disponible en el sitio de descarga y recomendada para su consumo |
Un enfoque simple para disponer de la última versión recomendada es tomar la primera versión de la lista que presenta un valor stage
de ReleasedAndBlessed
. Este enfoque funciona porque las versiones se ordenan en orden de SemVer 2.0.0.
El paquete NuGet.CommandLine
de nuget.org normalmente solo se actualiza con versiones ReleasedAndBlessed
.
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"
}
]
}