tools.json zum Entdecken von Nuget.exe-Versionen
Heute gibt es ein paar Möglichkeiten, die neueste Version von nuget.exe auf Ihrem Computer in skriptbarer Weise zu erhalten. Sie können beispielsweise das NuGet.CommandLine
Paket aus nuget.org herunterladen und extrahieren. Dies hat einige Komplexität, da sie entweder erfordert, dass Sie bereits nuget.exe (for nuget.exe install
) haben, oder Sie müssen die nupkg mit einem einfachen Entpacktool entzippen und die Binärdatei innerhalb finden.
Wenn Sie bereits nuget.exe haben, können Sie auch verwenden nuget.exe update -self
, aber dies erfordert auch eine vorhandene Kopie von nuget.exe. Dieser Ansatz aktualisiert Sie auch auf die neueste Version. Die Verwendung einer bestimmten Version ist nicht zulässig.
Der tools.json
Endpunkt ist verfügbar, um das Bootstrapping-Problem zu lösen und die Kontrolle über die Version von nuget.exe zu geben, die Sie herunterladen. Dies kann in CI/CD-Umgebungen oder in benutzerdefinierten Skripts verwendet werden, um jede veröffentlichte Version von nuget.exe zu entdecken und herunterzuladen.
Der tools.json
Endpunkt kann mithilfe einer nicht authentifizierten HTTP-Anforderung abgerufen werden (z. B. Invoke-WebRequest
in PowerShell oder wget
). Sie kann mithilfe eines JSON-Deserializers und nachfolgenden nuget.exe Download-URLs auch mithilfe nicht authentifizierter HTTP-Anforderungen abgerufen werden.
Der Endpunkt kann mithilfe der GET
Methode abgerufen werden:
GET https://dist.nuget.org/tools.json
Das JSON-Schema für den Endpunkt ist hier verfügbar:
GET https://dist.nuget.org/tools.schema.json
Antwort
Die Antwort ist ein JSON-Dokument mit allen verfügbaren Versionen von nuget.exe.
Das JSON-Stammobjekt weist die folgende Eigenschaft auf:
Name | Type | Erforderlich |
---|---|---|
nuget.exe | Array von Objekten | ja |
Das nuget.exe
-Parameterobjekt bietet folgende Eigenschaften:
Name | Type | Erforderlich | Hinweise |
---|---|---|---|
version | Zeichenfolge | ja | Eine SemVer 2.0.0 Zeichenfolge |
url | Zeichenfolge | ja | Eine absolute URL zum Herunterladen dieser Version von nuget.exe |
Stufe | Zeichenfolge | ja | Eine Enumerationszeichenfolge |
hochgeladen | Zeichenfolge | ja | Ein ungefährer ISO 8601-Zeitstempel, zu dem die Version verfügbar gemacht wurde |
Die Artikel im Array werden in absteigender Reihenfolge, SemVer 2.0.0 sortiert. Diese Garantie soll die Belastung eines Kunden reduzieren, der an der höchsten Versionsnummer interessiert ist. Dies bedeutet jedoch, dass die Liste nicht in chronologischer Reihenfolge sortiert ist. Wenn beispielsweise eine niedrigere Hauptversion zu einem späteren Zeitpunkt als eine höhere Hauptversion gewartet wird, wird diese dienstierte Version nicht am Anfang der Liste angezeigt. Wenn Sie die neueste Version nach Zeitstempel veröffentlichen möchten, sortieren Sie einfach das Array nach der uploaded
Zeichenfolge. Dies funktioniert, da sich der uploaded
Zeitstempel im ISO 8601-Format befindet, das chronologisch mithilfe einer lexikographischen Sortierung (d. h. einer einfachen Zeichenfolgensortierung) sortiert werden kann.
Die stage
Eigenschaft gibt an, wie diese Version des Tools überprüft wird.
Phase | Bedeutung |
---|---|
EarlyAccessPreview | Auf der Downloadwebseite noch nicht sichtbar und sollten von Partnern überprüft werden |
Veröffentlicht | Verfügbar auf der Download-Website, wird jedoch noch nicht für den weit verbreiteten Verbrauch empfohlen |
ReleasedAndBlessed | Verfügbar auf der Downloadwebsite und wird für den Verbrauch empfohlen |
Ein einfacher Ansatz für die neueste, empfohlene Version besteht darin, die erste Version in der Liste zu verwenden, die den stage
Wert hat ReleasedAndBlessed
. Dies funktioniert, da die Versionen in SemVer 2.0.0 sortiert sind.
Das Paket auf nuget.org wird in der NuGet.CommandLine
Regel nur mit ReleasedAndBlessed
Versionen aktualisiert.
Beispielanforderung
GET https://dist.nuget.org/tools.json
Beispielantwort
{
"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"
}
]
}