Publikowanie pakietów NuGet

Po utworzeniu pakietu NuGet i utworzeniu pliku nupkg możesz udostępnić pakiet innym deweloperom publicznie lub prywatnie. W tym artykule opisano sposób globalnego udostępniania pakietów publicznych za pośrednictwem nuget.org.

Możesz również udostępnić prywatne pakiety tylko zespołowi lub organizacji, hostując je w udziale plików, prywatnym serwerze NuGet lub repozytorium innej firmy, takim jak myget, ProGet, Nexus Repository lub Artifactory. Aby uzyskać więcej informacji, zobacz Hostowanie własnych źródeł danych NuGet. Aby uzyskać informacje na temat publikowania za pomocą usługi Azure Artifacts, zobacz Publikowanie pakietów w NuGet.org.

Publikowanie w usłudze nuget.org

Aby opublikować nuget.org, zaloguj się do nuget.org przy użyciu konta Microsoft i użyj go do utworzenia bezpłatnego konta nuget.org. Postępuj zgodnie z instrukcjami w temacie Dodawanie nowego indywidualnego konta.

Screenshot that shows the NuGet sign in link.

Po utworzeniu konta możesz opublikować pakiet w celu nuget.org przy użyciu portalu internetowego nuget.org, interfejsu wiersza polecenia dotnet lub interfejsu wiersza polecenia NuGet w wersji 4.1.0 lub nowszej. Pakiety można również publikować za pośrednictwem usługi Azure Pipelines.

Przekazywanie do portalu internetowego nuget.org

Aby przekazać pakiet do witryny internetowej nuget.org:

  1. Wybierz pozycję Przekaż w górnym menu w nuget.org, przejdź do pakietu na komputerze i wybierz pozycję Otwórz.

    Screenshot that shows the Upload dialog on nuget.org

    Jeśli identyfikator pakietu już istnieje w nuget.org, zostanie wyświetlony błąd. Zmień identyfikator pakietu w projekcie, ponownie spakuj i spróbuj przekazać ponownie.

  2. Jeśli nazwa pakietu jest dostępna, zostanie otwarta sekcja Weryfikuj, aby można było przejrzeć metadane z manifestu pakietu. Jeśli w pakiecie dołączono plik readme, wybierz pozycję Podgląd , aby upewnić się, że cała zawartość jest poprawnie renderowana.

    Aby zmienić dowolne metadane, zmodyfikuj plik projektu lub plik nuspec , ponownie skompiluj, ponownie spakuj i przekaż ponownie.

  3. Gdy wszystkie informacje są gotowe, wybierz pozycję Prześlij.

Wypychanie przy użyciu wiersza polecenia

Aby wypchnąć pakiety do nuget.org za pomocą wiersza polecenia, można użyć polecenia dotnet.exe lub nuget.exe w wersji 4.1.0 lub nowszej, co implementuje wymagane protokoły NuGet. Aby uzyskać więcej informacji, zobacz Protokoły NuGet.

Aby użyć dowolnego wiersza polecenia, najpierw musisz pobrać klucz interfejsu API z nuget.org.

Tworzenie klucza interfejsu API

  1. Zaloguj się do konta nuget.org lub utwórz konto , jeśli jeszcze go nie masz.

  2. Wybierz swoją nazwę użytkownika w prawym górnym rogu, a następnie wybierz pozycję Klucze interfejsu API.

  3. Wybierz pozycję Utwórz i podaj nazwę klucza.

  4. W obszarze Wybierz zakresy wybierz pozycję Wypchnij.

  5. W obszarze Wybierz wzorzec globu pakietów>wprowadź *.

  6. Wybierz pozycję Utwórz.

  7. Wybierz pozycję Kopiuj , aby skopiować nowy klucz.

    Screenshot that shows the new API key with the Copy link.

Ważne

  • Zawsze przechowuj klucz interfejsu API jako klucz tajny. Klucz interfejsu API jest jak hasło, które umożliwia każdemu zarządzać pakietami w Twoim imieniu. Usuń lub ponownie wygeneruj klucz interfejsu API, jeśli zostanie on przypadkowo ujawniony.
  • Zapisz klucz w bezpiecznej lokalizacji, ponieważ nie można ponownie skopiować klucza później. Jeśli wrócisz do strony klucza interfejsu API, musisz ponownie wygenerować klucz, aby go skopiować. Możesz również usunąć klucz interfejsu API, jeśli nie chcesz już wypychać pakietów.

Określenie zakresu umożliwia tworzenie oddzielnych kluczy interfejsu API do różnych celów. Każdy klucz ma przedział czasu wygaśnięcia i można określić zakres klucza dla określonych pakietów lub wzorców globu. Zakres każdego klucza można również ograniczyć do określonych operacji: Wypychanie nowych pakietów i wersji pakietów, wypychanie tylko nowych wersji pakietów lub anulowanie listy.

Za pomocą określania zakresu można tworzyć klucze interfejsu API dla różnych osób, które zarządzają pakietami w organizacji, aby miały one tylko wymagane uprawnienia.

Aby uzyskać więcej informacji, zobacz klucze interfejsu API o określonym zakresie.

Korzystanie z interfejsu wiersza polecenia dotnet

W folderze zawierającym plik nupkg uruchom następujące polecenie. Określ nazwę pliku nupkg i zastąp wartość klucza klucz kluczem interfejsu API.

dotnet nuget push Contoso.08.28.22.001.Test.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json

Dane wyjściowe przedstawiają wyniki procesu publikowania:

Pushing Contoso.08.28.22.001.Test.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
  PUT https://www.nuget.org/api/v2/package/
warn : All published packages should have license information specified. Learn more: https://aka.ms/nuget/authoring-best-practices#licensing.
  Created https://www.nuget.org/api/v2/package/ 1221ms
Your package was pushed.

Aby uzyskać więcej informacji, zobacz dotnet nuget push.

Uwaga

Jeśli chcesz uniknąć wygaśnięcia pakietu testowego na nuget.org, możesz wypchnąć do witryny testowej nuget.org pod adresem https://int.nugettest.org. Należy pamiętać, że pakiety przekazane do int.nugettest.org mogą nie być zachowywane.

Korzystanie z interfejsu wiersza polecenia Narzędzia NuGet

  1. W wierszu polecenia uruchom następujące polecenie, zastępując <your_API_key> ciąg kluczem uzyskanym z nuget.org:

    nuget setApiKey <your_API_key>
    

    To polecenie przechowuje klucz interfejsu API w konfiguracji NuGet, więc nie trzeba ponownie wprowadzać klucza interfejsu API na tym samym komputerze.

    Uwaga

    Ten klucz interfejsu API nie jest używany do uwierzytelniania za pomocą prywatnych źródeł danych. Aby zarządzać poświadczeniami uwierzytelniania za pomocą tych źródeł, zobacz polecenie nuget sources.

  2. Wypchnij pakiet przy użyciu następującego polecenia:

    nuget push YourPackage.nupkg -Source https://api.nuget.org/v3/index.json
    

Publikowanie za pomocą usługi Azure Pipelines

Pakiety można wypychać do nuget.org za pomocą usługi Azure Pipelines w ramach procesu ciągłej integracji/ciągłego wdrażania (CI/CD). Aby uzyskać więcej informacji, zobacz Publikowanie pakietów NuGet za pomocą usługi Azure Pipelines.

Publikowanie podpisanego pakietu

Aby przesłać podpisany pakiet, musisz najpierw zarejestrować certyfikat użyty do podpisania pakietu. Jeśli nie spełniasz podpisanych wymagań dotyczących pakietu, nuget.org odrzuca pakiet.

Limity rozmiaru pakietu

Nuget.org ma limit rozmiaru pakietu wynoszący około 250 MB. Po przekazaniu pakietu przekraczającego ten limit zostanie wyświetlony następujący błąd:

Plik pakietu przekracza limit rozmiaru. Spróbuj ponownie.

Jeśli taki pakiet zostanie wypchnięty z wiersza polecenia, generowane są następujące dane wyjściowe:

  RequestEntityTooLarge https://www.nuget.org/api/v2/package/ 13903ms
error: Response status code does not indicate success: 413 (The package file exceeds the size limit. Please try again.).

Jeśli występują te błędy, rozważ zmianę zawartości pakietu w celu zmniejszenia jej rozmiaru. Jeśli pakujesz symbole debugowania do pakietu, rozważ ich oddzielne opublikowanie. Inne zasoby można publikować oddzielnie jako co najmniej jeden pakiet zależności, aby rozłożyć je na mniejsze fragmenty.

Walidacja i indeksowanie pakietów

Pakiety wypychane do nuget.org przechodzą kilka weryfikacji, takich jak testy wirusów, a istniejące pakiety są okresowo skanowane. Po zakończeniu sprawdzania poprawności pakietu indeksowanie i wyświetlenie ich w wynikach wyszukiwania może zająć trochę czasu. Gdy pakiet jest indeksowany, jest wyświetlany w obszarze Pakiety nieznajdowane i na stronie pakietu zostanie wyświetlony następujący komunikat:

Screenshot of a message indicating that a package isn't yet published.

Po zakończeniu walidacji i indeksowania otrzymasz wiadomość e-mail z informacją o pomyślnym opublikowaniu pakietu. Jeśli sprawdzanie poprawności pakietu zakończy się niepowodzeniem, strona pakietu zostanie zaktualizowana w celu wyświetlenia skojarzonego błędu i otrzymasz wiadomość e-mail z powiadomieniem.

Walidacja i indeksowanie pakietów zwykle trwa mniej niż 15 minut. Jeśli publikowanie pakietów trwa dłużej niż oczekiwano, sprawdź stan nuget.org w status.nuget.org. Jeśli wszystkie systemy działają, a pakiet nie został pomyślnie opublikowany w ciągu godziny, skontaktuj się z nuget.org, korzystając z linku Kontakt z pomocą techniczną na stronie pakietu.

Aby wyświetlić stan pakietu, wybierz pozycję Zarządzaj pakietami pod nazwą konta w prawym górnym rogu nuget.org, a następnie wybierz pakiet z listy Opublikowane pakiety lub Pakiety nieznajdowane.

Zarządzanie właścicielami pakietów w nuget.org

Właściciele pakietów mają pełne uprawnienia do pakietu, w tym dodawanie i usuwanie innych właścicieli oraz publikowanie aktualizacji.

Mimo że plik nuspec pakietu NuGet definiuje autorów pakietu, nuget.org nie używa tych metadanych do zdefiniowania własności. Zamiast tego nuget.org przypisuje własność osobie, która publikuje pakiet, zalogowanego użytkownika, który przesłał pakiet, lub użytkownikowi, którego klucz interfejsu API był używany z elementem dotnet push, nuget SetApiKeylub nuget push.

Aby zmienić własność pakietu:

  1. Zaloguj się do nuget.org przy użyciu konta, które jest obecnie właścicielem pakietu.

  2. Wybierz swoją nazwę konta w prawym górnym rogu, wybierz pozycję Zarządzaj pakietami i rozwiń węzeł Opublikowane pakiety.

  3. Wybierz pakiet, którym chcesz zarządzać, a po prawej stronie pakietu wybierz pozycję Zarządzaj pakietem.

  4. Na stronie zarządzanie pakietami wybierz pozycję Właściciele.

  5. Przeprowadź jedną z następujących czynności:

    • Wybierz pozycję Usuń, aby usunąć bieżącego właściciela.

    • Dodaj właściciela w obszarze Dodaj właściciela , wprowadzając nazwę użytkownika i komunikat, a następnie wybierając pozycję Dodaj.

      Ta akcja wysyła wiadomość e-mail do nowego współwłaścicieli z linkiem potwierdzenia. Po potwierdzeniu ta osoba ma pełne uprawnienia do dodawania i usuwania właścicieli. Do momentu potwierdzenia w sekcji Bieżący właściciele są wyświetlane oczekujące zatwierdzenie dla tej osoby.

Aby przenieść własność, tak jak w przypadku zmiany własności lub opublikowania pakietu na niewłaściwym koncie dodaj nowego właściciela. Po potwierdzeniu własności mogą usunąć starego właściciela z listy.

Aby przypisać własność do firmy lub grupy, utwórz konto nuget.org z aliasem e-mail, który przekazuje do odpowiednich członków zespołu. Na przykład różne pakiety microsoft ASP.NET są współwłaścicielami kont microsoft i aspnet .

Czasami pakiet może nie mieć aktywnego właściciela. Na przykład oryginalny właściciel mógł pozostawić firmę, która wyprodukowała pakiet. Jeśli jesteś prawowitym właścicielem pakietu i musisz odzyskać własność, użyj formularza kontaktowego na nuget.org, aby wyjaśnić swoją sytuację zespołowi NuGet. Zespół wykonuje proces weryfikacji własności, w tym próby zlokalizowania istniejącego właściciela i może wysłać nowe zaproszenie, aby zostać właścicielem pakietu.

Następne kroki