Rozwiązywanie problemów z zainstalowanymi pakietami
Czasami warto sprawdzić, z którego źródła zainstalowano określony pakiet. Poniżej przedstawiono kilka sposobów sprawdzania.
Uwaga
Niektóre źródła pakietów obsługują koncepcję znaną jako nadrzędne źródła. Na przykład źródła nadrzędne usługi Azure Artifacts. Klienci NuGet nie wiedzą, czy pakiet pochodzi ze źródła nadrzędnego. W związku z tym każde rejestrowanie źródła pakietu spowoduje wyświetlenie listy skonfigurowanego źródła, a nie nadrzędnego źródła.
.nupkg.metadata
plik w folderze pakietów globalnych
Gdy pakiet zostanie wyodrębniony do folderu global-packages , zostanie zapisany plik .nupkg.metadata
. Począwszy od pakietu NuGet 5.9.0, pakiet NuGet doda źródło pakietu. Zobacz poniżej, aby mapować wersje pakietów NuGet na wersje programu Visual Studio lub zestawu .NET SDK. Na przykład:
{
"version": 2,
"contentHash": "bw3R9q8cVNhWXNpnvWb0OGP4HadS4zvClq+T1zf7AF+tLY1haZ2AvbHidQekf4PDv1T40c6brZeT/V0IBq7cEQ==",
"source": "https://api.nuget.org/v3/index.json"
}
Uwaga
Jeśli folder global-packages zawiera pakiety wyodrębnione przed uaktualnieniem do nowszej wersji narzędzi z pakietem NuGet 5.9.0, .nupkg.metadata
plik będzie w wersji 1 i nie będzie zawierać źródła pakietu. Możesz wyczyścić folder global-packages, aby upewnić się, że wszystkie pakiety będą zawierać źródło pakietu.
Napiwek
NuGet zapisuje .nupkg.metadata
plik tylko w folderze global-packages . Projekty korzystające z packages.config
folderu pakietów rozwiązań, który nie tworzy .nupkg.metadata
pliku.
Komunikat dziennika zainstalowanego pakietu
Począwszy od pakietu NuGet 5.9.0, pakiet NuGet generuje źródło pakietu w komunikacie przywracania informującym o zainstalowaniu pakietu. Na przykład:
Installed Moq 4.16.1 from https://api.nuget.org/v3/index.json with content hash bw3R9q8cVNhWXNpnvWb0OGP4HadS4zvClq+T1zf7AF+tLY1haZ2AvbHidQekf4PDv1T40c6brZeT/V0IBq7cEQ==.
Napiwek
Ten komunikat jest zwracany w normalny/informacyjny czasownik. Program Visual Studio i dotnet
interfejs wiersza polecenia domyślnie mają minimalną szczegółowość, więc ten komunikat nie będzie domyślnie widoczny. Narzędzia msbuild
interfejsu wiersza polecenia i nuget
domyślnie są domyślnie widoczne dla zwykłych zleceń, więc ten komunikat będzie domyślnie widoczny.
Komunikat dziennika HTTP
Jeśli pakiet nie jest dostępny lokalnie, albo w folderze global-packages , folder rezerwowym lub lokalnym źródle plików, NuGet pobierze go z dowolnego skonfigurowanego źródła pakietu za pośrednictwem protokołu HTTP. Żądania HTTP i odpowiedzi są rejestrowane na normalnym poziomie szczegółowości i powinny być widoczne tylko jedno żądanie i odpowiedź na wersję pakietu. Na przykład:
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
Jeśli pliki zostały ostatnio pobrane, mogą być pobierane z pamięci podręcznej http-cache 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
Format adresu URL może być inny w przypadku różnych implementacji serwera HTTP NuGet i niezależnie od tego, czy implementuje protokół HTTP NuGet V2, czy V3.
nuget.config
Jeśli masz zdefiniowane wiele źródeł HTTP, zobaczysz wiele żądań do pliku każdego pakietuindex.json
, po jednym dla każdego źródła. Jednak dla każdej wersji pakietu będzie dostępny tylko jeden nupkg
plik do pobrania.
Komunikat dziennika podpisu pakietu
Jeśli pobrany pakiet jest podpisany, narzędzie NuGet zweryfikuje podpis i zarejestruje następujący komunikat pod szczegółowym opisem:
PackageSignatureVerificationLog: PackageIdentity: Moq.4.16.1 Source: https://api.nuget.org/v3/index.json PackageSignatureValidity: True
Ten komunikat zostanie zgłoszony, czy pakiet został pobrany ze źródła pakietu HTTP, czy skopiowany ze źródła pakietu lokalnego. Nie będzie to dane wyjściowe, jeśli pakiet jest już dostępny w folderze global-packages lub folderze rezerwowym.
Ważne
Ze względu na usunięcie zaufania veriSign CA NuGet wyłączył weryfikację pakietu podpisanego na niektórych platformach, w niektórych wersjach nuGet i zestawu .NET SDK. W związku z tym te same pakiety mogą zawierać PackageSignatureVerificationLog
dzienniki lub te dzienniki mogą brakować, w zależności od platformy, na której jest uruchomione przywracanie, i której wersji platformy .NET lub Narzędzia NuGet używasz.
Mapa wersji narzędzia NuGet
Następujące wersje pakietu NuGet mają ważne zmiany dotyczące rejestrowania źródła pakietów:
Wersja narzędzia NuGet | Wersja programu Visual Studio | Wersja zestawu .NET SDK |
---|---|---|
NuGet 5.9.0 | Visual Studio 2019 16.9.0 | Zestaw .NET 5 SDK 5.0.200 |