tools.json para descobrir versões de nuget.exe
Hoje, existem algumas maneiras de obter a versão mais recente do nuget.exe em seu computador de forma programável. Por exemplo, você pode baixar e extrair o pacote NuGet.CommandLine
do nuget.org. Isso tem certa complexidade, pois requer que você já tenha nuget.exe (para nuget.exe install
) ou você tem que descompactar o .nupkg usando uma ferramenta básica de descompactação e encontrar o binário dentro.
Se você já tem nuget.exe, você também pode usar nuget.exe update -self
, no entanto, isso também requer ter uma cópia existente do nuget.exe. Essa abordagem também atualiza você para a versão mais recente. Não permite o uso de uma versão específica.
O ponto de extremidade tools.json
está disponível para resolver o problema de inicialização e para conceder controle da versão do nuget.exe que você baixar. Isso pode ser usado em ambientes de CI/CD ou em scripts personalizados para descobrir e baixar qualquer versão de lançamento do nuget.exe.
O ponto de extremidade tools.json
pode ser obtido usando uma solicitação HTTP não autenticada (por exemplo, Invoke-WebRequest
no PowerShell ou wget
). Ele pode ser analisado usando um desserializador JSON e URLs de download de nuget.exe subsequentes também podem ser buscados usando solicitações HTTP não autenticadas.
O ponto de extremidade pode ser obtido usando o método GET
:
GET https://dist.nuget.org/tools.json
O esquema JSON do ponto de extremidade está disponível aqui:
GET https://dist.nuget.org/tools.schema.json
A resposta é um documento JSON contendo todas as versões disponíveis de nuget.exe.
O objeto JSON raiz tem a seguinte propriedade:
Nome | Digitar | Obrigatório |
---|---|---|
nuget.exe | matriz de objetos | sim |
O objeto na matriz nuget.exe
tem as seguintes propriedades:
Nome | Digitar | Obrigatória | Observações |
---|---|---|---|
version | string | sim | Uma cadeia de caracteres do SemVer 2.0.0 |
url | string | sim | Uma URL absoluta para baixar esta versão de nuget.exe |
preparar | string | sim | Uma cadeia de caracteres enumerada |
Carregado | string | sim | Um carimbo de data/hora ISO 8601 aproximado de quando a versão foi disponibilizada |
Os itens na matriz serão classificados em ordem decrescente do SemVer 2.0.0. Esta garantia destina-se a reduzir a carga de um cliente que está interessado no número de versão mais alto. No entanto, isso significa que a lista não está classificada em ordem cronológica. Por exemplo, se uma versão principal inferior for atendida em uma data posterior a uma versão principal superior, essa versão com manutenção não aparecerá no topo da lista. Se você quiser que a versão mais recente seja lançada por carimbo de data/hora, basta classificar a matriz pela cadeia de caracteres uploaded
. Isso funciona porque o carimbo de data/hora uploaded
está no formato ISO 8601, que pode ser classificado cronologicamente usando uma classificação lexicográfica (ou seja, uma classificação de cadeia de caracteres simples).
A propriedade stage
indica o quão verificada esta versão da ferramenta é.
Estágio | Significado |
---|---|
EarlyAccessPreview | Ainda não visível na página da web de download e deve ser validado por parceiros |
Lançado | Disponível no site de download, mas ainda não é recomendado para consumo generalizado |
ReleasedAndBlessed | Disponível no site de download e recomendado para consumo |
Uma abordagem simples para ter a versão mais recente e recomendada é pegar a primeira versão da lista que tem o valor stage
de ReleasedAndBlessed
. Isso funciona porque as versões são classificadas na ordem SemVer 2.0.0.
O pacote NuGet.CommandLine
no nuget.org normalmente só é atualizado com ReleasedAndBlessed
versões.
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"
}
]
}