Solução de problemas de pacotes instalados
Às vezes, talvez você queira validar de qual fonte um pacote específico foi instalado. Estas são algumas maneiras de fazer isso:
Observação
Algumas origens de pacotes oferecem suporte um conceito conhecido como origens upstream. Por exemplo, origens upstream de artefatos do Azure. Os clientes do NuGet não sabem se um pacote é proveniente de uma origem upstream. Portanto, qualquer log da origem do pacote listará a origem configurada, e não a origem upstream.
Arquivo .nupkg.metadata
na pasta de pacotes globais
Quando um pacote é extraído para a pasta global-packages, um arquivo .nupkg.metadata
é gravado. A partir do NuGet 5.9.0, o NuGet adicionará a origem do pacote. Consulte abaixo para mapear versões do NuGet a versões do Visual Studio ou do SDK do .NET. Por exemplo:
{
"version": 2,
"contentHash": "bw3R9q8cVNhWXNpnvWb0OGP4HadS4zvClq+T1zf7AF+tLY1haZ2AvbHidQekf4PDv1T40c6brZeT/V0IBq7cEQ==",
"source": "https://api.nuget.org/v3/index.json"
}
Observação
Se a pasta global-packages tiver pacotes extraídos antes de você atualizar para uma versão mais recente das ferramentas que tenha o NuGet 5.9.0, o arquivo .nupkg.metadata
será a versão 1 e não conterá a origem do pacote. Você pode limpar sua pasta global-packages para garantir que todos os pacotes contenham a origem do pacote.
Dica
O NuGet grava o arquivo .nupkg.metadata
somente na pasta global-packages. Os projetos que usam packages.config
utilizam uma pasta de pacotes de solução que não cria um arquivo .nupkg.metadata
.
Mensagem de log do pacote instalado
A partir do NuGet 5.9.0, o NuGet adiciona a origem do pacote à mensagem de restauração informando que um pacote foi instalado. Por exemplo:
Installed Moq 4.16.1 from https://api.nuget.org/v3/index.json with content hash bw3R9q8cVNhWXNpnvWb0OGP4HadS4zvClq+T1zf7AF+tLY1haZ2AvbHidQekf4PDv1T40c6brZeT/V0IBq7cEQ==.
Dica
Essa mensagem é formulada com detalhes normais/informativos. O Visual Studio e a CLI do dotnet
assumem por padrão o detalhamento mínimo. Portanto, essa mensagem não será visível por padrão. As ferramentas de CLI msbuild
e nuget
têm como padrão o detalhamento normal. Portanto, essa mensagem ficará visível por padrão.
Mensagem de log HTTP
Quando um pacote não está disponível localmente, seja na pasta global-packages, em uma pasta de fallback ou em uma origem de arquivo local, o NuGet o baixará de qualquer origem de pacote configurada via HTTP. As solicitações e respostas HTTP são registradas no nível de detalhamento normal e você deve ver apenas uma única solicitação e resposta por versão de pacote. Por exemplo:
info : GET https://api.nuget.org/v3-flatcontainer/moq/index.json
info : OK https://api.nuget.org/v3-flatcontainer/moq/index.json 56ms
info : GET https://api.nuget.org/v3-flatcontainer/moq/4.16.1/moq.4.16.1.nupkg
info : OK https://api.nuget.org/v3-flatcontainer/moq/4.16.1/moq.4.16.1.nupkg 3ms
Se os arquivos foram baixados recentemente, eles podem ser recuperados de http-cache do NuGet
CACHE https://api.nuget.org/v3-flatcontainer/moq/index.json
CACHE https://api.nuget.org/v3-flatcontainer/moq/4.16.1/moq.4.16.1.nupkg
O formato do URL pode ser diferente para diferentes implementações de servidor HTTP NuGet e se ele está implementando o protocolo HTTP NuGet V2 ou V3.
Se seu nuget.config
tiver várias fontes HTTP definidas, você verá várias solicitações para cada arquivo index.json
de pacote, uma para cada origem. Mas haverá apenas um único download de nupkg
para cada versão do pacote.
Mensagem de log de assinatura do pacote
Se o pacote que está sendo baixado estiver assinado, o NuGet validará a assinatura e registrará a seguinte mensagem detalhada:
PackageSignatureVerificationLog: PackageIdentity: Moq.4.16.1 Source: https://api.nuget.org/v3/index.json PackageSignatureValidity: True
Essa mensagem será mostrada se o pacote tiver sido baixado de uma origem de pacote HTTP ou copiado de uma origem de pacote local. Ele não será emitido se o pacote já estiver disponível na pasta global-packages ou em uma pasta de fallback.
Importante
Devido à remoção da confiança da CA da VeriSign, o NuGet desabilitou a verificação de pacotes assinados em determinadas plataformas, em determinadas versões do NuGet e no SDK do .NET. Portanto, os mesmos pacotes podem ter logs PackageSignatureVerificationLog
ou esses logs podem estar faltando, dependendo da plataforma em que você está executando a restauração e qual versão do .NET ou NuGet você está usando.
Mapa de versão do NuGet
As seguintes versões do NuGet têm alterações importantes em relação ao log de origem do pacote:
Versão do NuGet | Versão do Visual Studio | Versão do SDK do .NET |
---|---|---|
NuGet 5.9.0 | Visual Studio 2019 16.9.0 | .NET 5 SDK 5.0.200 |