nuget.exe sürümlerini bulmak için tools.json

Bugün, makinenizde nuget.exe en son sürümünü betik biçiminde edinmenin birkaç yolu vardır. Örneğin, paketi nuget.org indirip ayıklayabilirsiniz NuGet.CommandLine . Bunun karmaşıklığı vardır çünkü zaten nuget.exe sahip olmanız gerekir (için nuget.exe install) veya temel bir unzip aracı kullanarak .nupkg dosyasının sıkıştırmasını açmanız ve içindeki ikiliyi bulmanız gerekir.

Zaten nuget.exe varsa, kullanabilirsiniz nuget.exe update -self, ancak bunun için de nuget.exe'nin mevcut bir kopyasına sahip olmanız gerekir. Bu yaklaşım sizi en son sürüme de güncelleştirir. Belirli bir sürümün kullanılmasına izin vermez.

tools.json nokta hem önyükleme sorununu çözmek hem de indirdiğiniz nuget.exe sürümünün denetimini vermek için kullanılabilir. Bu, CI/CD ortamlarında veya özel betiklerde nuget.exe'ın yayımlanan sürümlerini keşfetmek ve indirmek için kullanılabilir.

tools.json nokta kimliği doğrulanmamış bir HTTP isteği (örneğin Invoke-WebRequest , PowerShell veya wget) kullanılarak getirilebilir. JSON seri durumdan çıkarıcı kullanılarak ayrıştırılabilir ve sonraki nuget.exe indirme URL'leri de kimliği doğrulanmamış HTTP istekleri kullanılarak getirilebilir.

Uç nokta şu yöntem kullanılarak GET getirilebilir:

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

Uç noktanın JSON şemasına buradan ulaşabilirsiniz:

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

Response

Yanıt, nuget.exe tüm kullanılabilir sürümlerini içeren bir JSON belgesidir.

Kök JSON nesnesi aşağıdaki özelliğe sahiptir:

Adı Tür Zorunlu
nuget.exe nesne dizisi evet

Dizideki nuget.exe her nesne aşağıdaki özelliklere sahiptir:

Adı Tür Zorunlu Notlar
sürüm string evet SemVer 2.0.0 dizesi
url Dize evet bu nuget.exe sürümünü indirmek için mutlak URL
Sahne string evet Sabit listesi dizesi
Yüklenen string evet Sürümün ne zaman kullanıma sunulduğuna ilişkin yaklaşık ISO 8601 zaman damgası

Dizideki öğeler azalan SemVer 2.0.0 düzeninde sıralanır. Bu garanti, en yüksek sürüm numarasıyla ilgilenen bir istemcinin yükünü azaltmaya yöneliktir. Ancak bu, listenin kronolojik düzende sıralanmadığı anlamına gelir. Örneğin, daha düşük bir ana sürüme daha yüksek bir ana sürümden sonraki bir tarihte hizmet verirseniz, bu hizmet sunulan sürüm listenin en üstünde görünmez. En son sürümün zaman damgası tarafından yayımlanmasını istiyorsanız, diziyi dizeye uploaded göre sıralamanız yeterlidir. Bunun işe yaradığı için uploaded zaman damgası ISO 8601 biçimindedir ve bu biçim kronolojik olarak sözcük temelli sıralama (basit bir dize sıralama) kullanılarak sıralanabilir.

özelliği, stage aracın bu sürümünün nasıl izlendiğini gösterir.

Aşama Anlamı
EarlyAccessPreview İndirme web sayfasında henüz görünmüyor ve iş ortakları tarafından doğrulanmalıdır
Yayınlandı İndirme sitesinde mevcuttur ancak geniş çapta kullanım için henüz önerilmez
ReleasedAndBlessed İndirme sitesinde kullanılabilir ve kullanım için önerilir

En son, önerilen sürüme sahip olmak için basit bir yaklaşım, listedeki değeri olan stage ilk sürümü almaktır ReleasedAndBlessed. Bu işe yarar çünkü sürümler SemVer 2.0.0 düzeninde sıralanır.

NuGet.CommandLine nuget.org paketi genellikle yalnızca sürümlerle ReleasedAndBlessed güncelleştirilir.

Örnek isteği

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

Örnek yanıt

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