Znajdowanie i ocenianie pakietów NuGet dla projektu

Po uruchomieniu projektu .NET lub zidentyfikowaniu potrzeb funkcjonalnych w aplikacji lub usłudze często można zainstalować istniejące pakiety NuGet, aby zaoszczędzić czas i problemy z tworzeniem własnych pakietów. Istniejące pakiety mogą pochodzić z kolekcji publicznej nuget.org lub z prywatnych źródeł, które udostępnia Organizacja lub inna strona.

Znajdowanie pakietów

Pakiety można znaleźć bezpośrednio w witrynie https://nuget.org/packageslub z poziomu interfejsu użytkownika Menedżer pakietów programu Visual Studio lub konsoli Menedżer pakietów z nuget.org jako źródła. Wszystkie pakiety z nuget.org są rutynowo skanowane pod kątem wirusów.

W nuget.org/packages zostanie wyświetlona lista pakietów NuGet z najpopularniejszymi pakietami we wszystkich projektach platformy .NET wymienionych jako pierwsze. Niektóre z tych pakietów mogą być przydatne w projektach.

Screenshot that shows the default view of nuget.org/packages with the most popular packages at the top.

Aby wyszukać pakiet, wprowadź nazwę pakietu lub wyszukiwane terminy w polu Wyszukiwania w górnej części strony. Do filtrowania wyszukiwania można użyć składni wyszukiwania zaawansowanego.

Zaawansowane filtrowanie i sortowanie

W nuget.org/packages możesz uściślić wyniki wyszukiwania, korzystając z zaawansowanych opcji filtrowania i sortowania.

Screenshot that shows the filtering and sorting options on nuget.org.

Użyj filtrów struktur, aby wyświetlić pakiety przeznaczone dla określonych platform .NET (aby dowiedzieć się więcej, zobacz Platformy docelowe):

  • Wybranie jednego z pól wyboru generowania platformy .NET Framework spowoduje filtrowanie wyników wyszukiwania pod kątem pakietów zgodnych z dowolną z poszczególnych platform docelowych w ramach tej generacji. Na przykład wybranie .NET spowoduje zwrócenie pakietów zgodnych z dowolnymi nowoczesnymi platformami .NET, w tym net5.0 za pośrednictwem net8.0.

    Screenshot that shows the Framework filters on nuget.org.

  • Rozwinięcie jednej z tych generacji platformy ze strzałkami po prawej stronie spowoduje wyświetlenie poszczególnych platform docelowych Monikers (TFMs), według których można filtrować wyniki. Na przykład wybranie net5.0 spowoduje zwrócenie pakietów zgodnych ze strukturą ".NET 5.0".

  • Domyślnie pakiety są filtrowane według rozszerzonej listy obliczonych zgodnych struktur. Jeśli chcesz filtrować pakiety wyłącznie według platform zasobów, dla których jawnie są one przeznaczone, usuń zaznaczenie pola wyboru Uwzględnij zgodne struktury .

  • Połączenie wielu filtrów struktury spowoduje wyświetlenie wyników wyszukiwania pasujących do wszystkich wybranych filtrów, czyli pakietów, które mieszczą się w przecięciu wybranych opcji. Na przykład wybranie netcoreapp3.1 opcji i net45 razem spowoduje wyświetlenie pakietów przeznaczonych dla programów ".NET Core 3.1" i ".NET Framework 4.5". Zaznaczenie pola wyboru generowania .NET Core struktury i net45 pole wyboru spowoduje zwrócenie pakietów przeznaczonych dla programu ".NET Framework 4.5" i co najmniej jednego z programów TFM ".NET Core" (netcoreapp1.0 za pośrednictwem netcoreapp3.1).

    • Alternatywnie, jeśli chcesz zobaczyć pakiety pasujące do dowolnego filtru struktury, wybierz przycisk radiowy Dowolne w trybie filtrowania struktury. Teraz wybranie netcoreapp3.1 pozycji i net5.0 spowoduje wyświetlenie pakietów przeznaczonych dla platformy ".NET Core 3.1" lub ".NET 5.0". Zaznaczenie netcoreapp3.1 pola wyboru i .NET pole wyboru generowania platformy spowoduje zwrócenie pakietów przeznaczonych dla platformy ".NET Core 3.1" lub dowolnego z elementów "". TFMs platformy NET (net5.0 za pośrednictwem net8.0polecenia ).
  • Więcej informacji na temat oceniania obsługiwanych struktur pakietu i jego zgodności z projektem można znaleźć tutaj.

Użyj filtru Typ pakietu, aby wyświetlić pakiety określonego typu:

  • Wszystkie typy są domyślne i pokazuje wszystkie pakiety niezależnie od typu.
  • Zależności filtruje do zwykłych pakietów NuGet, które można zainstalować w projekcie.
  • Narzędzia .NET filtruje do pakietów narzędzi platformy .NET zawierających aplikacje konsolowe.
  • Filtry szablonów do szablonów platformy .NET, których można użyć do tworzenia nowych projektów za pomocą polecenia dotnet new .

Domyślnie pakiet NuGet wyświetla listę wszystkich wersji pakietów, w tym wersji wstępnej i wersji beta. W sekcji Opcje usuń zaznaczenie pola wyboru Uwzględnij wersję wstępną, aby wyświetlić tylko stabilne, wydane wersje pakietów.

Aby zastosować zmiany, wybierz pozycję Zastosuj. Aby wrócić do ustawień domyślnych, wybierz pozycję Resetuj.

Użyj listy rozwijanej Sortuj według w prawym górnym rogu strony, aby posortować listę według kilku kryteriów:

  • Istotność jest wartością domyślną i sortuje wyniki zgodnie z wewnętrznym algorytmem oceniania.
  • Pliki do pobrania sortuje wyniki wyszukiwania według całkowitej liczby pobrań w kolejności malejącej.
  • Ostatnio zaktualizowane sortuje wyniki wyszukiwania według najnowszej daty utworzenia wersji pakietu w kolejności malejącej chronologicznej.

Wyszukiwanie w składni

Zapytania wyszukiwania pakietów w nuget.org z poziomu interfejsu wiersza polecenia NuGet i z poziomu programu Visual Studio używają tej samej składni. Inne źródła pakietów, takie jak Azure Artifacts lub GitHub Package Repository, mogą używać innej składni lub nie obsługują zaawansowanego filtrowania.

  • Pakiet , , packageid, authordescriptiontagstitlesummaryversionlub owner właściwości można przeszukiwać idprzy użyciu składni .<property>:<term>

  • Wyszukiwanie ma zastosowanie do słów kluczowych i opisów i nie uwzględnia wielkości liter. Na przykład następujące ciągi przeszukają id właściwość ciągu nuget.core:

    id:NuGet.Core
    ID:nuget.core
    Id:NUGET.CORE

  • id Wyszukuje podciągi dopasowania właściwości, natomiast packageid i owner używaj dokładnych dopasowań bez uwzględniania wielkości liter. Na przykład:

    PackageId:jquery wyszukuje dokładny identyfikator jquerypakietu .
    Id:jquery wyszukuje wszystkie identyfikatory pakietów zawierające ciąg jquery.

  • Jednocześnie można wyszukać wiele wartości lub właściwości. Na przykład:

    id:jquery id:ui wyszukuje wiele terminów we id właściwości .
    id:jquery tags:validation wyszukuje wiele właściwości.

  • Wyszukiwanie ignoruje nieobsługiwane właściwości, więc invalid:jquery ui jest taka sama jak wyszukiwanie uii invalid:jquery zwraca wszystkie pakiety.

Określanie obsługiwanych struktur

NuGet instaluje pakiet w projekcie tylko wtedy, gdy obsługiwane platformy .NET pakietu obejmują struktury docelowe projektu. Jeśli pakiet nie jest zgodny, pakiet NuGet zgłasza błąd.

Istnieje kilka sposobów określania struktur, które obsługuje pakiet:

  • Na stronie wyszukiwania obsługiwane struktury pakietu będą wyświetlane jako znaczki poniżej identyfikatora pakietu. Te wskaźniki pokazują najniższe obsługiwane wersje platform z generacji .NET, .NET Core, .NET Standard i .NET Framework. Pakiet będzie zgodny z dowolną wersją platformy, która jest równa lub wyższa niż wyświetlana wersja wskaźnika.

    Znaczki "Ciemnoniebieskie" reprezentują jawnie ukierunkowane platformy, a znaczki "jasnoniebieskie" reprezentują obliczone zgodne platformy.

    Kliknięcie wskaźnika spowoduje przekierowanie do strony szczegółów pakietu na nuget.org. Karta Struktury na stronie pakietu będzie zawierać pełną listę obsługiwanych struktur.

    Screenshot of the Framework badges on nuget.org's search page.

  • Na stronie pakietu w nuget.org obsługiwane struktury są wyświetlane poniżej identyfikatora pakietu i na karcie Struktury , ale nie wszystkie pakiety zawierają obsługiwane struktury.

    Screenshot of the Frameworks UI and tab on the package page at nuget.org.

  • Pobierz pakiet ręcznie, wybierając pozycję Pobierz pakiet w obszarze Informacje. Zmień rozszerzenie pliku pobranego pakietu z .nupkg na .zip, otwórz folder .zip i sprawdź jego folder lib . Istnieją podfoldery dla każdej obsługiwanej platformy, z których każda ma nazwę z nazwą docelową platformy (TFM). Aby uzyskać więcej informacji, zobacz Platformy docelowe. Jeśli w bibliotece lib nie ma żadnych podfolderów i istnieje tylko jedna biblioteka DLL, spróbuj zainstalować pakiet, aby odnaleźć jego zgodność.

  • Spróbuj zainstalować pakiet w projekcie przy użyciu polecenia Install-Package w konsoli programu Visual Studio Menedżer pakietów. Jeśli pakiet jest niezgodny, dane wyjściowe konsoli zawierają obsługiwane struktury pakietu.

Pakiety w wersjach wstępnych

Wielu autorów pakietów udostępnia wersje zapoznawcze i beta, ponieważ nadal ulepszają i szukają opinii na temat najnowszych poprawek. Domyślnie nuget.org wyświetla pakiety wersji wstępnej na liście pakietów i wynikach wyszukiwania.

Aby wyświetlić listę i wyszukać tylko stabilne wersje:

  • W nuget.org usuń zaznaczenie pola wyboru Uwzględnij wersję wstępną w panelu wyszukiwania zaawansowanego.
  • W interfejsie użytkownika programu Visual Studio NuGet Menedżer pakietów usuń zaznaczenie pola wyboru Dołącz wersję wstępną obok pola Wyszukaj.

Konsola programu Visual Studio Menedżer pakietów, interfejs wiersza polecenia NuGet i narzędzia interfejsu wiersza polecenia dotnet nie zawierają domyślnie wersji wstępnych. Aby uwzględnić wersje wstępne:

  • W konsoli Menedżer pakietów użyj przełącznika -IncludePrerelease z poleceniami Find-Package, Get-Package, Install-Package, Sync-Packagei Update-Package . Aby uzyskać więcej informacji, zobacz Dokumentację programu PowerShell.

  • W przypadku interfejsu wiersza polecenia NuGet użyj przełącznika install-prerelease z poleceniami , update, deletei mirror . Aby uzyskać więcej informacji, zobacz dokumentację interfejsu wiersza polecenia narzędzia NuGet.

  • W przypadku interfejsu wiersza polecenia dotnet określ wersję wstępną z argumentem -v . Aby uzyskać więcej informacji, zobacz dotnet add package reference (Dokumentacja dodatku pakietu dotnet).

Natywne pakiety języka C++

Projekty Visual Studio C++ mogą używać natywnych pakietów NuGet języka C++. Zainstalowanie tych pakietów umożliwia polecenie zarządzaj pakietami NuGet menu kontekstowego, uwidacznia platformę docelową native i zapewnia integrację programu MSBuild.

Aby znaleźć pakiety natywne w nuget.org/packages, wyszukaj przy użyciu polecenia tag:native. Takie pakiety zwykle udostępniają pliki targets i .props , które nuGet importuje automatycznie podczas dodawania pakietów.

Ocena pakietów

Najlepszym sposobem oceny przydatności pakietu jest wypróbowanie go. Zależność od pakietu jest zależna od używanego pakietu, dlatego należy upewnić się, że jest niezawodna i niezawodna. Jednak instalowanie pakietu i bezpośrednie testowanie go jest czasochłonne. Możesz dowiedzieć się wiele o jakości pakietu, korzystając z informacji na stronie pakietu pod adresem nuget.org/packages.

  • Znacznik wyboru Prefiks zarezerwowany obok identyfikatora pakietu na liście pakietów i na stronie pakietu oznacza, że właściciele pakietów zastosowali prefiks i otrzymali prefiks identyfikatora pakietu zarezerwowanego. Aby spełnić kryteria rezerwacji prefiksu identyfikatora, właściciele pakietów muszą wyraźnie identyfikować się i ich pakiety.

    Screenshot that shows Prefix Reserved on a package's page.

  • Pliki do pobrania w prawej kolumnie strony pakietu zawierają wartości Total (Łączna, Bieżąca wersja) i Per day average downloads (Średnia liczba pobrań na dzień). Duża liczba wskazuje, że pakiet okazał się jednym z wielu deweloperów.

    Screenshot that shows Download statistics on a package's page.

    Wybierz pozycję Pełne statystyki obok pozycji Pobrane , aby wyświetlić stronę przedstawiającą pobieranie pakietów w ciągu ostatnich sześciu tygodni według numeru wersji. Wersje, z których korzysta więcej deweloperów, są zazwyczaj lepszymi wyborami.

  • Karta Używane przez na stronie pakietu zawiera pięć najpopularniejszych pakietów nuget.org i repozytoriów GitHub, które zależą od tego pakietu. Pakiety i repozytoria, które zależą od tego pakietu, są nazywane zależnościami. Pakiety zależne i repozytoria mogą być postrzegane jako elementy popierające ten pakiet, ponieważ zdecydowały się ufać i zależeć od niego.

    Screenshot that shows the Used By list.

    Najnowsza stabilna wersja pakietu zależnego musi zależeć od dowolnej wersji tego pakietu. Ta definicja gwarantuje, że wymienione pakiety zależne są aktualnym odzwierciedleniem decyzji autorów pakietów o zaufaniu i zależności od pakietu. Lista zależności nie pokazuje zależności od wersji wstępnej, ponieważ nie są one jeszcze uważane za pełne poparcie. W poniższych przykładach pokazano, które pakiety są wyświetlane jako zależne:

    Wersja pakietu zależnego Pakiet zależny wymieniony jako zależny?
    v1.0.0
    Wersja 1.1.0 (najnowsza stabilna) zależy od tego pakietu
    Wersja 1.2.0 —wersja zapoznawcza
    PRAWDA, najnowsza stabilna wersja zależy od tego pakietu
    Wersja 1.0.0 zależy od tego pakietu
    wersja 1.1.0 (najnowsza stabilna)
    Wersja 1.2.0 —wersja zapoznawcza
    FALSE, najnowsza stabilna wersja nie zależy od tego pakietu
    Wersja 1.0.0 zależy od tego pakietu
    wersja 1.1.0 (najnowsza stabilna)
    Wersja 1.2.0-preview zależy od tego pakietu
    FALSE, najnowsza stabilna wersja nie zależy od tego pakietu

    Liczba gwiazdek w repozytorium GitHub wskazuje na jego popularność wśród użytkowników usługi GitHub. Aby uzyskać więcej informacji na temat systemu klasyfikacji gwiazd i repozytorium GitHub, zobacz Informacje o gwiazdach.

    Uwaga

    Sekcja Używane przez jest automatycznie generowana okresowo, bez przeglądu przez człowieka i wyłącznie do celów informacyjnych.

  • Karta Wersje na stronie pakietu zawiera wersje, pliki do pobrania, daty ostatniej aktualizacji i poważne luki w zabezpieczeniach wersji pakietu. Zainstalowana wersja nie powinna mieć żadnych luk w zabezpieczeniach o wysokiej ważności. Dobrze obsługiwany pakiet zawiera najnowsze aktualizacje i długą historię wersji. Zaniedbywane pakiety mają kilka i dawno temu aktualizacje.

    Screenshot that shows the Versions list.

Prawa kolumna strony pakietu zawiera inne linki informacyjne:

Screenshot that shows the right column of the package page.

  • Wybierz pozycję Witryna internetowa projektu, jeśli jest dostępna, aby zobaczyć, jakie opcje pomocy technicznej udostępnia autor. Projekt z dedykowaną witryną jest ogólnie dobrze obsługiwany.

  • Wybierz pozycję Repozytorium źródłowe, aby przejść do repozytorium kodu źródłowego Git dla pakietu. Wielu autorów utrzymuje swoje pakiety w repozytoriach open source, dzięki czemu użytkownicy mogą bezpośrednio współtworzyć poprawki błędów i ulepszenia funkcji. Historia współtworzenia pakietu jest dobrym wskaźnikiem liczby aktywnie zaangażowanych deweloperów.

  • Wybierz <licencję typu> licencji , aby wyświetlić licencję MIT lub inną licencję pakietu. Jeśli pakiet nie określa postanowień licencyjnych, skontaktuj się z właścicielem pakietu.

  • Wybierz dowolnego z właścicieli pakietów w obszarze Właściciele , aby wyświetlić inne opublikowane pakiety. Właściciele z wieloma pakietami są bardziej skłonni do dalszego wspierania swojej pracy. Wybierz pozycję Skontaktuj się z właścicielami obok pozycji Właściciele, aby skontaktować się bezpośrednio z deweloperami pakietów.

Pobieranie informacji o licencji

Niektórzy klienci NuGet i źródła danych NuGet mogą nie być w stanie wyświetlić informacji o licencjonowaniu. Aby zachować zgodność z poprzednimi wersjami w takich przypadkach, adres URL licencji wskazuje ten dokument na temat sposobu pobierania informacji o licencji.

Jeśli wybranie adresu URL licencji dla pakietu spowoduje wyświetlenie tej strony, oznacza to, że pakiet zawiera plik licencji i:

  • Masz połączenie z kanałem informacyjnym, który nie wie, jak interpretować i wyświetlać informacje o licencji klientowi lub
  • Używasz klienta, który nie wie, jak interpretować i odczytywać informacje o licencji, które udostępnia kanał informacyjny, lub
  • Kombinacja obu tych scenariuszy.

Aby odczytać informacje w pliku licencji wewnątrz pakietu:

  1. Ręcznie pobierz pakiet i rozpakuj jego zawartość do folderu.
  2. Otwórz plik nuspec w katalogu głównym folderu.
  3. <license> Sprawdź tag, taki jak <license type="file">license\license.txt</license>. Przykładowy tag wskazuje, że plik licencji ma nazwę license.txt i znajduje się w podfolderze o nazwie license.
  4. Przejdź do określonej lokalizacji i otwórz określony plik.

Aby uzyskać informacje na temat programu MSBuild równoważnego ustawianiu licencji w pliku nuspec, zobacz Pakowanie wyrażenia licencji lub pliku licencji.

Następne kroki