Dela via


tools.json för identifiering av nuget.exe versioner

Idag finns det några sätt att få den senaste versionen av nuget.exe på din dator på ett skriptbart sätt. Du kan till exempel ladda ned och extrahera NuGet.CommandLine paketet från nuget.org. Detta har viss komplexitet eftersom det antingen kräver att du redan har nuget.exe (för nuget.exe install) eller så måste du packa upp .nupkg med hjälp av ett grundläggande packa upp verktyg och hitta binärfilen inuti.

Om du redan har nuget.exekan du också använda nuget.exe update -self, men det kräver också att du har en befintlig kopia av nuget.exe. Den här metoden uppdaterar dig även till den senaste versionen. Det tillåter inte användning av en specifik version.

Slutpunkten tools.json är tillgänglig för att både lösa bootstrapping-problemet och för att ge kontroll över den version av nuget.exe som du laddar ned. Detta kan användas i CI/CD-miljöer eller i anpassade skript för att identifiera och ladda ned alla versioner av nuget.exe.

Slutpunkten tools.json kan hämtas med en oautentiserad HTTP-begäran (t.ex. Invoke-WebRequest i PowerShell eller wget). Den kan parsas med hjälp av en JSON-deserializer och efterföljande nuget.exe nedladdnings-URL:er kan också hämtas med oautentiserade HTTP-begäranden.

Slutpunkten kan hämtas med hjälp av GET metoden:

GET https://dist.nuget.org/tools.json

JSON-schemat för slutpunkten är tillgängligt här:

GET https://dist.nuget.org/tools.schema.json

Svar

Svaret är ett JSON-dokument som innehåller alla tillgängliga versioner av nuget.exe.

JSON-rotobjektet har följande egenskap:

Namn Typ Krävs
nuget.exe en matris med objekt yes

Varje objekt i matrisen nuget.exe har följande egenskaper:

Namn Typ Krävs Noteringar
version snöre yes En SemVer 2.0.0-sträng
URL snöre yes En absolut URL för att ladda ned den här versionen av nuget.exe
stage snöre yes En enumssträng
uppladdad snöre yes En ungefärlig ISO 8601-tidsstämpel för när versionen gjordes tillgänglig

Objekten i matrisen sorteras i fallande ordning, SemVer 2.0.0. Den här garantin är avsedd att minska belastningen för en klient som är intresserad av högsta versionsnummer. Det innebär dock att listan inte sorteras i kronologisk ordning. Om till exempel en lägre huvudversion betjänas vid ett senare datum än en högre huvudversion visas inte den här versionen överst i listan. Om du vill ha den senaste versionen baserad på tidsstämpeln, sortera helt enkelt listan efter uploaded-strängen. Detta fungerar eftersom tidsstämpeln uploaded är i ISO 8601-format som kan sorteras kronologiskt med hjälp av en lexikal sortering (dvs. en enkel strängsortering).

Egenskapen stage anger hur granskad den här versionen av verktyget är.

Etapp Meaning
EarlyAccessPreview Inte synligt ännu på nedladdningswebbsidan och bör valideras av partner
Släppt Tillgänglig på nedladdningswebbplatsen men rekommenderas ännu inte för bred förbrukning
Släppt och Välsignat Tillgänglig på nedladdningswebbplatsen och rekommenderas för förbrukning

En enkel metod för att ha den senaste rekommenderade versionen är att ta den första versionen i listan som har stage värdet ReleasedAndBlessed. Detta fungerar eftersom versionerna sorteras i SemVer 2.0.0-ordning.

Paketet NuGet.CommandLine på nuget.org uppdateras vanligtvis bara med ReleasedAndBlessed versioner.

Exempelbegäran

GET https://dist.nuget.org/tools.json

Exempelsvar

{
    "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"
        }
    ]
}