Szybki start: tworzenie i publikowanie pakietu NuGet przy użyciu programu Visual Studio (tylko system Windows)

Za pomocą programu Microsoft Visual Studio można utworzyć pakiet NuGet z biblioteki klas platformy .NET, a następnie opublikować go w nuget.org za pomocą narzędzia interfejsu wiersza polecenia.

Przewodnik Szybki start dotyczy tylko użytkowników systemu Windows. Jeśli używasz Visual Studio dla komputerów Mac, zobacz Tworzenie pakietu NuGet z istniejących projektów biblioteki lub używanie interfejsu wiersza polecenia platformy .NET.

Wymagania wstępne

  • Zainstaluj program Visual Studio 2022 dla systemu Windows z obciążeniem powiązanym z platformą .NET Core.

    Możesz zainstalować wersję Community Edition 2022 bezpłatnie z visualstudio.microsoft.com lub użyć wersji Professional lub Enterprise.

    Program Visual Studio 2017 lub nowszy automatycznie obejmuje funkcje NuGet podczas instalowania programu . Obciążenie związane z platformą NET.

  • Zainstaluj interfejs wiersza polecenia platformy .NET, jeśli nie został jeszcze zainstalowany.

    W przypadku programu Visual Studio 2017 lub nowszego interfejs wiersza polecenia platformy .NET jest automatycznie instalowany z dowolnym obciążeniem powiązanym z platformą .NET Core. W przeciwnym razie zainstaluj zestaw .NET Core SDK , aby uzyskać interfejs wiersza polecenia platformy .NET. Interfejs wiersza polecenia platformy .NET jest wymagany dla projektów platformy .NET korzystających z formatu zestawu SDK (atrybutu zestawu SDK). Domyślny szablon biblioteki klas platformy .NET w programie Visual Studio 2017 i nowszych używa atrybutu ZESTAWU SDK.

    Ważne

    Jeśli pracujesz z projektem w stylu innego niż zestaw SDK, wykonaj procedury opisane w temacie Tworzenie i publikowanie pakietu .NET Framework (Visual Studio), aby utworzyć i opublikować pakiet. W tym artykule zaleca się interfejs wiersza polecenia platformy .NET. Chociaż można opublikować dowolny pakiet NuGet przy użyciu interfejsu wiersza polecenia NuGet, niektóre kroki opisane w tym artykule są specyficzne dla projektów w stylu zestawu SDK i interfejsu wiersza polecenia platformy .NET. Interfejs wiersza polecenia NuGet jest używany w projektach innych niż zestaw SDK (zazwyczaj .NET Framework).

  • Zarejestruj się w celu uzyskania bezpłatnego konta na nuget.org , jeśli jeszcze go nie masz. Przed przekazaniem pakietu NuGet należy zarejestrować i potwierdzić konto.

  • Zainstaluj interfejs wiersza polecenia Narzędzia NuGet, pobierając go z nuget.org. Dodaj plik nuget.exe do odpowiedniego folderu i dodaj ten folder do zmiennej środowiskowej PATH.

Tworzenie projektu biblioteki klas

Możesz użyć istniejącego projektu biblioteki klas platformy .NET dla kodu, który chcesz spakować, lub utworzyć go w następujący sposób:

  1. W programie Visual Studio wybierz pozycje Plik>Nowy>Projekt.

  2. W oknie Tworzenie nowego projektu wybierz pozycję C#, Windows i Biblioteka na listach rozwijanych.

  3. Na wynikowej liście szablonów projektów wybierz pozycję Biblioteka klas (z opisem Projekt do tworzenia biblioteki klas, która jest przeznaczona dla platformy .NET lub .NET Standard), a następnie wybierz pozycję Dalej.

  4. W oknie Konfigurowanie nowego projektu wprowadź ciąg AppLogger jako nazwę projektu, a następnie wybierz przycisk Dalej.

  5. W oknie Dodatkowe informacje wybierz odpowiednią platformę, a następnie wybierz pozycję Utwórz.

    Jeśli nie masz pewności, którą strukturę wybrać, najnowsza wersja jest dobrym wyborem i można ją łatwo zmienić później. Aby uzyskać informacje na temat platformy, zobacz Kiedy należy używać platformy .NET 5.0 lub .NET 6.0 w porównaniu z platformą .NET Standard.

  6. Aby upewnić się, że projekt został utworzony prawidłowo, wybierz pozycję Kompiluj>rozwiązanie. Biblioteka DLL znajduje się w folderze Debug (lub Wydanie, jeśli zamiast tego skompilujesz konfigurację).

  7. (Opcjonalnie) W tym przewodniku Szybki start nie trzeba pisać żadnego dodatkowego kodu dla pakietu NuGet, ponieważ biblioteka klas szablonów jest wystarczająca do utworzenia pakietu. Jeśli jednak chcesz, aby pakiet zawierał kod funkcjonalny, dołącz następujący kod:

    namespace AppLogger
    {
        public class Logger
        {
            public void Log(string text)
            {
                Console.WriteLine(text);
            }
        }
    }
    

Konfigurowanie właściwości pakietu

Po utworzeniu projektu można skonfigurować właściwości pakietu NuGet, wykonując następujące kroki:

  1. Wybierz projekt w Eksplorator rozwiązań, a następnie wybierz pozycję Project><project name> Properties (Właściwości projektu), gdzie <nazwa projektu to nazwa> projektu.

  2. Rozwiń węzeł Pakiet, a następnie wybierz pozycję Ogólne.

    Węzeł Pakiet jest wyświetlany tylko dla projektów w stylu zestawu SDK w programie Visual Studio. Jeśli projekt jest przeznaczony dla projektu w stylu innym niż ZESTAW SDK (zazwyczaj .NET Framework), przeprowadź migrację projektu lub zobacz Tworzenie i publikowanie pakietu .NET Framework, aby uzyskać instrukcje krok po kroku.

    Screenshot showing NuGet package properties in a Visual Studio project.

  3. W przypadku pakietów utworzonych do użytku publicznego zwróć szczególną uwagę na właściwość Tags , ponieważ tagi pomagają innym osobom znaleźć pakiet i zrozumieć, co robi.

  4. Nadaj pakietowi unikatowy identyfikator pakietu i wypełnij wszystkie inne żądane właściwości. Aby zapoznać się z tabelą przedstawiającą sposób mapowania właściwości programu MSBuild (projektów w stylu zestawu SDK) na właściwości pliku nuspec , zobacz pack targets (Obiekty docelowe pakietów). Opis właściwości pliku nuspec można znaleźć w dokumentacji pliku nuspec. Wszystkie te właściwości przechodzą do manifestu tworzonego .nuspec przez program Visual Studio dla projektu.

    Ważne

    Należy nadać pakietowi identyfikator unikatowy dla nuget.org lub dowolnego używanego hosta. W przeciwnym razie wystąpi błąd. W tym przewodniku Szybki start zalecamy dołączenie przykładu lub testu w nazwie, ponieważ krok publikowania sprawia, że pakiet jest publicznie widoczny.

  5. (Opcjonalnie) Aby wyświetlić właściwości bezpośrednio w pliku projektu AppLogger.csproj, wybierz pozycję Project Edit Project File (Edytuj plik projektu>).

    Zostanie załadowana karta AppLogger.csproj .

    Ta opcja jest dostępna od programu Visual Studio 2017 dla projektów korzystających z atrybutu w stylu zestawu SDK. W przypadku wcześniejszych wersji programu Visual Studio należy wybrać pozycję Project Unload Project (Projekt>rozładuj projekt), zanim będzie można edytować plik projektu.

Uruchamianie polecenia pakietu

Aby utworzyć pakiet NuGet z projektu, wykonaj następujące kroki:

  1. Wybierz pozycję Build Configuration Manager (Kompiluj>program Configuration Manager), a następnie ustaw opcję Active solution configuration (Aktywna konfiguracja rozwiązania) na Release (Wydanie).

  2. Wybierz projekt AppLogger w Eksplorator rozwiązań, a następnie wybierz pozycję Pack (Pakiet).

    Program Visual Studio kompiluje projekt i tworzy plik nupkg .

  3. Sprawdź okno Dane wyjściowe, aby uzyskać szczegółowe informacje, które zawiera ścieżkę do pliku pakietu. W tym przykładzie wbudowany zestaw znajduje się w elemecie bin\Release\net6.0 , ponieważ pasuje do docelowego elementu docelowego platformy .NET 6.0:

    1>------ Build started: Project: AppLogger, Configuration: Release Any CPU ------
    1>AppLogger -> d:\proj\AppLogger\AppLogger\bin\Release\net6.0\AppLogger.dll
    1>Successfully created package 'd:\proj\AppLogger\AppLogger\bin\Release\AppLogger.1.0.0.nupkg'.
    ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
    
  4. Jeśli nie widzisz polecenia Pack w menu, projekt prawdopodobnie nie jest projektem w stylu zestawu SDK i musisz użyć interfejsu wiersza polecenia NuGet. Migrowanie projektu i używanie interfejsu wiersza polecenia platformy .NET lub zobacz Tworzenie i publikowanie pakietu .NET Framework, aby uzyskać instrukcje krok po kroku.

(Opcjonalnie) Generowanie pakietu na kompilacji

Program Visual Studio można skonfigurować tak, aby automatycznie generował pakiet NuGet podczas kompilowania projektu:

  1. Wybierz projekt w Eksplorator rozwiązań, a następnie wybierz pozycję Project><project name> Properties (Właściwości projektu), gdzie <nazwa projektu to nazwa> projektu (AppLogger w tym przypadku).

  2. Rozwiń węzeł Pakiet, wybierz pozycję Ogólne, a następnie wybierz pozycję Generuj pakiet NuGet podczas kompilacji.

    Screenshot showing package properties with Generate NuGet package on build selected.

Uwaga

Po automatycznym wygenerowaniu pakietu dodatkowy czas do spakowania zwiększa całkowity czas kompilacji projektu.

(Opcjonalnie) Pakowanie za pomocą programu MSBuild

Alternatywą dla używania polecenia menu Pack jest nuGet 4.x+ i MSBuild 15.1+ obsługuje pack element docelowy, gdy projekt zawiera niezbędne dane pakietu:

  1. Po otwarciu projektu w Eksplorator rozwiązań otwórz wiersz polecenia, wybierając pozycję Narzędzia>Wiersz polecenia Dla deweloperów wiersza>polecenia.

    Wiersz polecenia zostanie otwarty w katalogu projektu.

  2. Uruchom następujące polecenie: msbuild -t:pack.

Aby uzyskać więcej informacji, zobacz Tworzenie pakietu przy użyciu programu MSBuild.

Publikowanie pakietu

Po utworzeniu pliku nupkg opublikuj go w nuget.org przy użyciu interfejsu wiersza polecenia platformy .NET lub interfejsu wiersza polecenia NuGet wraz z kluczem interfejsu API uzyskanym z nuget.org.

Uwaga

  • Nuget.org skanuje wszystkie przekazane pakiety wirusów i odrzuca pakiety, jeśli znajdzie jakiekolwiek wirusy. Nuget.org również okresowo skanuje wszystkie istniejące pakiety wymienione na liście.

  • Pakiety publikowane w nuget.org są publicznie widoczne dla innych deweloperów, chyba że nie zostaną one wyświetlone. Aby hostować pakiety prywatnie, zobacz Hostowanie własnych źródeł danych NuGet.

Uzyskiwanie klucza interfejsu API

Przed opublikowaniem pakietu NuGet utwórz klucz 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.

Publikowanie za pomocą interfejsu wiersza polecenia platformy .NET lub interfejsu wiersza polecenia NuGet

Każde z poniższych narzędzi interfejsu wiersza polecenia umożliwia wypchnięcie pakietu na serwer i opublikowanie go. Wybierz kartę narzędzia interfejsu wiersza polecenia — interfejs wiersza polecenia platformy .NET lub interfejs wiersza polecenia NuGet.

Użycie interfejsu wiersza polecenia platformy .NET (dotnet.exe) jest zalecaną alternatywą dla używania interfejsu wiersza polecenia NuGet.

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.

Błędy publikowania

Błędy z push polecenia zwykle wskazują problem. Na przykład być może nie pamiętasz o zaktualizowaniu numeru wersji w projekcie, więc próbujesz opublikować pakiet, który już istnieje.

Występują również błędy, jeśli klucz interfejsu API jest nieprawidłowy lub wygasł lub jeśli próbujesz opublikować pakiet przy użyciu identyfikatora, który już istnieje na hoście. Załóżmy na przykład, że identyfikator AppLogger-test już istnieje w nuget.org. Jeśli spróbujesz opublikować pakiet przy użyciu tego identyfikatora, push polecenie zwraca następujący błąd:

Response status code does not indicate success: 403 (The specified API key is invalid,
has expired, or does not have permission to access the specified package.).

Jeśli wystąpi ten błąd, sprawdź, czy używasz prawidłowego klucza interfejsu API, który nie wygasł. Jeśli tak jest, błąd wskazuje, że identyfikator pakietu już istnieje na hoście. Aby rozwiązać ten problem, zmień identyfikator pakietu na unikatowy, ponownie skompiluj projekt, utwórz ponownie plik nupkg i spróbuj ponownie wykonać push polecenie.

Zarządzanie opublikowanym pakietem

Po pomyślnym opublikowaniu pakietu otrzymasz wiadomość e-mail z potwierdzeniem. Aby wyświetlić właśnie opublikowany pakiet, w nuget.org wybierz swoją nazwę użytkownika w prawym górnym rogu, a następnie wybierz pozycję Zarządzaj pakietami.

Uwaga

Indeksowanie pakietu i wyświetlanie go w wynikach wyszukiwania, w których inne osoby mogą je znaleźć, może zająć trochę czasu. W tym czasie pakiet zostanie wyświetlony w obszarze Pakiety nieznajdujące się na liście, a na stronie pakietu zostanie wyświetlony następujący komunikat:

Screenshot showing the publishing message that's displayed when you upload a package to nuget.org.

Opublikowano pakiet NuGet w celu nuget.org, którego inni deweloperzy mogą używać w swoich projektach.

Jeśli utworzono pakiet, który nie jest przydatny (taki jak ten przykładowy pakiet utworzony przy użyciu pustej biblioteki klas) lub nie chcesz, aby pakiet był widoczny, możesz usunąć jego listę , aby ukryć go przed wynikami wyszukiwania:

  1. Po pojawieniu się pakietu w obszarze Opublikowane pakiety na stronie Zarządzanie pakietami wybierz ikonę ołówka obok listy pakietów.

    Screenshot that shows the Edit icon for a package listing on nuget.org.

  2. Na następnej stronie wybierz pozycję Lista, usuń zaznaczenie pola wyboru Lista w wynikach wyszukiwania, a następnie wybierz pozycję Zapisz.

    Screenshot that shows clearing the List checkbox for a package on nuget.org.

Pakiet jest teraz wyświetlany w obszarze Pakiety nieznajdowane w obszarze Zarządzanie pakietami i nie jest już wyświetlany w wynikach wyszukiwania.

Uwaga

Aby 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.

Dodawanie pliku readme lub innego pliku

Aby bezpośrednio określić pliki do uwzględnienia w pakiecie, zmodyfikuj plik projektu i dodaj content właściwość:

<ItemGroup>
  <Content Include="readme.txt">
    <Pack>true</Pack>
    <PackagePath>\</PackagePath>
  </Content>
</ItemGroup>

W tym przykładzie właściwość określa plik o nazwie readme.txt w katalogu głównym projektu. Program Visual Studio wyświetla zawartość tego pliku jako zwykły tekst natychmiast po zainstalowaniu pakietu. Pliki Readme nie są wyświetlane dla pakietów zainstalowanych jako zależności. Na przykład oto plik readme pakietu HtmlAgilityPack:

1 ----------------------------------------------------
2 ---------- Html Agility Pack Nuget Readme ----------
3 ----------------------------------------------------
4
5 ----Silverlight 4 and Windows Phone 7.1+ projects-----
6 To use XPATH features: System.Xml.Xpath.dll from the 3 Silverlight 4 SDK must be referenced. 
7 This is normally found at 
8 %ProgramFiles(x86)%\Microsoft SDKs\Microsoft SDKs\Silverlight\v4.0\Libraries\Client 
9 or 
10 %ProgramFiles%\Microsoft SDKs\Microsoft SDKs\Silverlight\v4.0\Libraries\Client
11
12 ----Silverlight 5 projects-----
13 To use XPATH features: System.Xml.Xpath.dll from the Silverlight 5 SDK must be referenced. 
14 This is normally found at 
15 %ProgramFiles(x86)%\Microsoft SDKs\Microsoft SDKs\Silverlight\v5.0\Libraries\Client 
16 or 
17 %ProgramFiles%\Microsoft SDKs\Microsoft SDKs\Silverlight\v5.0\Libraries\Client

Uwaga

Jeśli dodasz tylko readme.txt w katalogu głównym projektu bez uwzględniania go we content właściwości pliku projektu, nie zostanie on uwzględniony w pakiecie.

Więcej filmów NuGet można znaleźć w witrynach Channel 9 i YouTube.

Gratulujemy utworzenia pakietu NuGet przy użyciu biblioteki klas programu Visual Studio .NET. Przejdź do następnego artykułu, aby dowiedzieć się, jak utworzyć pakiet NuGet za pomocą programu Visual Studio .NET Framework.

Aby dowiedzieć się więcej o tym, co ma do zaoferowania NuGet, zobacz następujące artykuły: