tools.json pour découvrir les versions de nuget.exe
Aujourd’hui, il existe plusieurs façons d’obtenir la dernière version de nuget.exe sur votre machine de manière scriptable. Par exemple, vous pouvez télécharger et extraire le package NuGet.CommandLine
à partir de nuget.org. Cela présente une certaine complexité, car il nécessite que vous disposiez déjà de nuget.exe (pour nuget.exe install
) ou que vous deviez décompresser le fichier .nupkg à l’aide d’un outil de décompression de base et rechercher le fichier binaire à l’intérieur.
Si vous avez déjà nuget.exe, vous pouvez également utiliser nuget.exe update -self
, mais cela nécessite également une copie existante de nuget.exe. Cette approche vous met également à jour vers la dernière version. Elle n’autorise pas l’utilisation d’une version spécifique.
Le point de terminaison tools.json
est disponible pour résoudre le problème d’amorçage et pour contrôler la version de nuget.exe que vous téléchargez. Cela peut être utilisé dans des environnements CI/CD ou dans des scripts personnalisés pour découvrir et télécharger n’importe quelle version publiée de nuget.exe.
Le point de terminaison tools.json
peut être récupéré à l’aide d’une demande HTTP non authentifiée (par ex. Invoke-WebRequest
dans PowerShell ou wget
). Il peut être analysé à l’aide d’un désérialiseur JSON et d’URL de téléchargement nuget.exe ultérieures peuvent également être récupérées à l’aide de demandes HTTP non authentifiées.
Le point de terminaison peut être récupéré à l’aide de la méthode GET
:
GET https://dist.nuget.org/tools.json
Le schéma JSON du point de terminaison est disponible ici :
GET https://dist.nuget.org/tools.schema.json
Response
La réponse est un document JSON contenant toutes les versions disponibles de nuget.exe.
L’objet racine JSON dispose de la propriété suivante :
Nom | Type | Requis |
---|---|---|
nuget.exe | tableau d'objets | Oui |
Chaque objet dans le tableau nuget.exe
contient les propriétés suivantes :
Nom | Type | Requise | Notes |
---|---|---|---|
version | chaîne | Oui | Chaîne SemVer 2.0.0 |
url | string | Oui | URL absolue pour télécharger cette version de nuget.exe |
phase | string | Oui | Chaîne d’énumération |
chargé | string | Oui | Horodatage ISO 8601 approximatif du moment où la version a été rendue disponible |
Les articles du tableau seront triés dans l’ordre décroissant, SemVer 2.0.0. Cette garantie est destinée à réduire la charge d’un client qui s’intéresse au numéro de version le plus élevé. Toutefois, cela signifie que la liste n’est pas triée dans l’ordre chronologique. Par exemple, si une version principale inférieure est prise en charge à une date ultérieure à une version majeure supérieure, cette version prise en charge n’apparaît pas en haut de la liste. Si vous souhaitez que la version la plus récente soit publiée par timestamp, triez simplement le tableau par la chaîne uploaded
. Cela fonctionne car l’horodatage uploaded
est au format ISO 8601 qui peut être trié chronologiquement à l’aide d’un tri lexicographique (c’est-à-dire un tri de chaîne simple).
La propriété stage
indique la façon dont cette version de l’outil est vérifiée.
Étape | Signification |
---|---|
EarlyAccessPreview | Non encore visible sur la page web de téléchargement et doit être validée par les partenaires |
Lancé | Disponible sur le site de téléchargement, mais n’est pas encore recommandé pour une consommation à grande échelle |
ReleasedAndBlessed | Disponible sur le site de téléchargement et recommandé pour la consommation |
Une approche simple pour avoir la dernière version recommandée consiste à prendre la première version de la liste dont la valeur stage
est ReleasedAndBlessed
. Cela fonctionne, car les versions sont triées dans l’ordre SemVer 2.0.0.
Le package NuGet.CommandLine
sur nuget.org est généralement mis à jour uniquement avec les versions ReleasedAndBlessed
.
Exemple de requête
GET https://dist.nuget.org/tools.json
Exemple de réponse
{
"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"
}
]
}