Megosztás a következőn keresztül:


Rövid útmutató: NuGet-csomag létrehozása és közzététele a Visual Studióval (csak Windows rendszeren)

A Microsoft Visual Studióval létrehozhat egy NuGet-csomagot egy .NET-osztálytárból, majd közzéteheti nuget.org cli-eszközzel.

A rövid útmutató csak Windows-felhasználók számára érhető el. Mac gép használata esetén használja a .NET CLI.

Előfeltételek

  • Telepítse a Visual Studio 2022 for Windowst egy .NET Core-alapú számítási feladattal.

    A 2022-ben megjelent Közösségi kiadás ingyenesen telepíthető visualstudio.microsoft.com, vagy használhatja a Professional vagy az Enterprise kiadást.

    A Visual Studio 2017 és újabb verziói automatikusan tartalmazzák a NuGet funkciókat, amikor telepít egy .NET-hez kapcsolódó munkaterhelést.

  • Telepítse a .NET parancssori felületet, ha még nincs telepítve.

    A Visual Studio 2017-ben és újabb verzióiban a .NET CLI automatikusan telepítve lesz a .NET Core-hoz kapcsolódó számítási feladatokkal. Ellenkező esetben telepítse a .NET Core SDK a .NET CLI beszerzéséhez. A .NET CLI szükséges a SDK-stílusú formátumot (SDK attribútum) használó .NET-projektekhez. A Visual Studio 2017 és újabb verzióiban az alapértelmezett .NET-osztálykódtársablon az SDK attribútumot használja.

    Fontos

    Ha nem SDK-stílusú projekttel dolgozik, kövesse a .NET-keretrendszercsomag (Visual Studio) létrehozása és közzététele eljárásait a csomag létrehozásához és közzétételéhez. Ebben a cikkben a .NET parancssori felület használata javasolt. Bár bármilyen NuGet-csomagot közzétehet a NuGet CLI használatával, a cikkben szereplő lépések némelyike SDK-stílusú projektekre és .NET CLI-re vonatkozik. A NuGet CLI nem SDK-stílusú projektekhez (általában .NET-keretrendszerhez).

  • Regisztráljon ingyenes fiókra nuget.org, ha még nem rendelkezik ilyen fiókkal. A NuGet-csomag feltöltése előtt regisztrálnia kell és meg kell erősítenie a fiókot.

  • Telepítse a NuGet CLI-t a nuget.orgletöltésével. Adja hozzá a nuget.exe fájlt egy megfelelő mappához, és adja hozzá a mappát a PATH környezeti változóhoz.

Osztálytárprojekt létrehozása

Használhat egy meglévő .NET-osztálytár-projektet a csomagolni kívánt kódhoz, vagy létrehozhat egyet az alábbiak szerint:

  1. A Visual Studióban válassza a Fájl>Új>Projektlehetőséget.

  2. Az Új projekt létrehozása ablakban válassza C#, Windowsés Kódtár lehetőséget a legördülő listákban.

  3. Az eredményként kapott projektsablonok listájában válassza Osztálytár (a leírással együtt .NET vagy .NET Standardcélcsoportot tartalmazó osztálytár létrehozására szolgáló projekt), majd válassza Továbblehetőséget.

  4. Az Új projektje konfigurálása ablakban adja meg a AppLogger nevet a Projekt nevéhez, majd válassza a Továbbgombot.

  5. A További információk ablakban válassza ki a megfelelő Keretrendszert, majd válassza a Létrehozáslehetőséget.

    Ha nem biztos abban, hogy melyik keretrendszert válassza, a legújabb jó választás, és később könnyen módosítható. További információért arról, hogy melyik keretrendszert érdemes használni, tekintse meg a Mikor célozzuk meg a .NET 5.0 vagy .NET 6.0 verziót a .NET Standarddal szemben.

  6. A projekt megfelelő létrehozásának biztosításához válassza Build>Build Solutionlehetőséget. A DLL a Hibakeresés mappában található (vagy kiadás, ha ezt a konfigurációt hozza létre).

  7. (Nem kötelező) Ebben a rövid útmutatóban nem kell további kódot írnia a NuGet-csomaghoz, mert a sablonosztálytár elegendő egy csomag létrehozásához. Ha azonban funkcionális kódot szeretne használni a csomaghoz, adja meg a következő kódot:

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

Csomagtulajdonságok konfigurálása

A projekt létrehozása után az alábbi lépések végrehajtásával konfigurálhatja a NuGet-csomag tulajdonságait:

  1. Jelölje ki a projektet Megoldáskezelő, majd válassza Projekt><projekt nevét> Tulajdonságok, ahol <projektnév> a projekt neve.

  2. Bontsa ki a Csomag csomópontot, majd válassza Általánoslehetőséget.

    A Csomag csomópont csak ADK-stílusú projektekhez jelenik meg a Visual Studióban. Ha nem SDK stílusú projektet (általában .NET-keretrendszert) céloz meg, migrálja a projekt, vagy tekintse meg .NET-keretrendszercsomag létrehozása és közzététele részletes útmutatást.

    Képernyőkép a NuGet-csomag tulajdonságairól egy Visual Studio-projektben.

  3. A nyilvános használatra készült csomagok esetében különös figyelmet kell fordítani a Címkék tulajdonságra, mivel a címkék segítenek másoknak megtalálni a csomagot, és megérteni, hogy mit tesz.

  4. Adjon meg egy egyedi csomagazonosítót, és töltse ki a kívánt egyéb tulajdonságokat. Az MSBuild tulajdonságoknak (SDK-stílusú projektek) a .nuspec fájltulajdonságokra való leképezését bemutató táblázatért lásd a csomagolási célokat. A .nuspec fájl tulajdonságainak leírását lásd a .nuspec fájl hivatkozásnál. Mindezek a tulajdonságok bekerülnek a Visual Studio által a projekthez létrehozott .nuspec jegyzékbe.

    Fontos

    A csomagnak egyedi azonosítót kell adnia, amely egyedi a nuget.org-on vagy bármely más hoszton, amit használ. Ellenkező esetben hiba történik. Ebben a rövid útmutatóban azt javasoljuk, hogy a névben szerepeljen a minta vagy a teszt, mert a közzétételi lépés nyilvánosan láthatóvá teszi a csomagot.

  5. (Nem kötelező) Ha közvetlenül a AppLogger.csproj projektfájlban szeretné megtekinteni a tulajdonságokat, válassza Project>Projektfájl szerkesztéselehetőséget.

    Betöltődik AppLogger.csproj lap.

    Ez a lehetőség a Visual Studio 2017-től érhető el az SDK-stílusú attribútumot használó projektek esetében. A korábbi Visual Studio-verziók esetében a projektfájl szerkesztése előtt ki kell jelölnie a Project>Projekt kiürítését.

A csomagparancs futtatása

Ha NuGet-csomagot szeretne létrehozni a projektből, kövesse az alábbi lépéseket:

  1. Válassza a Build>Configuration Managerlehetőséget, majd állítsa be az Aktív megoldás konfigurációjátKiadás.

  2. Válassza ki az AppLogger-projektet Megoldáskezelő, majd válassza Packlehetőséget.

    A Visual Studio létrehozza a projektet, és létrehozza a .nupkg fájlt.

  3. A részleteket a Kimeneti ablakban találja, amely tartalmazza a csomagfájl elérési útját. Ebben a példában a beépített szerelvény bin\Release\net6.0 a .NET 6.0-célnak megfelelően:

    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. Ha nem látja a Pack parancsot a menüben, akkor valószínűleg a projekt nem SDK-stílusú, és a NuGet parancssort kell használnia. Vagy migrálja a projektet és használja a .NET CLI-t, vagy tekintse meg a .NET-keretrendszer csomag létrehozásáról és közzétételéről szóló részletes útmutatást.

(Nem kötelező) Csomag létrehozása buildkor

A Visual Studio konfigurálható úgy, hogy automatikusan létrehozza a NuGet-csomagot a projekt létrehozásakor:

  1. Jelölje ki a projektet Megoldáskezelő, majd válassza Projekt><projektnév> Tulajdonságoklehetőséget, ahol <projektnév> a projekt neve (ebben az esetben az AppLogger).

  2. Bontsa ki a Csomag csomópontot, válassza ki a Általánoslehetőséget, majd válassza a NuGet-csomag létrehozása a build soránlehetőséget.

    A csomag tulajdonságainak képernyőképe, amelyen a NuGet-csomag létrehozása ki van választva.

Jegyzet

Amikor automatikusan létrehozza a csomagot, a csomagolás plusz ideje növeli a projekt végső összeszerelési idejét.

(Nem kötelező) Csomagolás MSBuild használatával

A Pack menüparancs használata helyett a NuGet 4.x+ és az MSBuild 15.1+ támogatja a pack célokat, ha a projekt tartalmazza a szükséges csomagadatokat:

  1. A projekt megnyitása után a Megoldáskezelő-ben, nyisson meg egy parancssort a Eszközök>Parancssor>Fejlesztői parancssorkiválasztásával.

    Megnyílik a parancssor a projektkönyvtárban.

  2. Futtassa a következő parancsot: msbuild -t:pack.

További információ: Csomag létrehozása az MSBuildhasználatával.

A csomag közzététele

Miután létrehozott egy .nupkg fájlt, tegye közzé a nuget.org-on a .NET CLI vagy a NuGet CLI használatával, valamint egy a nuget.org-ról szerzett API-kulccsal.

Jegyzet

  • Nuget.org az összes feltöltött csomagot vírusokat keres, és elutasítja a csomagokat, ha bármilyen vírust talál. Nuget.org rendszeresen ellenőrzi az összes meglévő felsorolt csomagot is.

  • A nuget.org közzétett csomagok nyilvánosan láthatók a többi fejlesztő számára, kivéve, ha ön nem sorolja fel őket. Információ a csomagok privát üzemeltetéséről, lásd: Saját NuGet-hírcsatornák üzemeltetése.

Szerezze be API-kulcsát

A NuGet-csomag közzététele előtt hozzon létre egy API-kulcsot:

  1. Jelentkezzen be nuget.org fiókjába vagy hozzon létre egy fiókot, ha még nem rendelkezik ilyen fiókkal.

  2. Válassza ki a felhasználónevet a jobb felső sarokban, majd válassza API-kulcsoklehetőséget.

  3. Válassza a -t, hozza létre az-t, és adja meg a kulcs nevét.

  4. A Hatókörök kijelöléseterületen válassza a Leküldéseslehetőséget.

  5. A Csomagok kijelölése>Glob mintaterületen adja meg a '*' karaktert.

  6. Válassza létrehozása lehetőséget.

  7. Válassza másolása lehetőséget az új kulcs másolásához.

    Képernyőkép, amelyen az új API-kulcs látható a Másolás hivatkozással.

Fontos

  • Mindig tartsa titokban az API-kulcsot. Az API-kulcs olyan, mint egy jelszó, amely lehetővé teszi, hogy bárki kezelje a csomagokat az Ön nevében. Ha véletlenül kiderült, törölje vagy hozza létre újra az API-kulcsot.
  • Mentse a kulcsot biztonságos helyre, mert később nem másolhatja újra a kulcsot. Ha visszatér az API-kulcs lapjára, újra kell létrehoznia a kulcsot a másoláshoz. Az API-kulcsot akkor is eltávolíthatja, ha már nem szeretne csomagokat leküldni.

hatókörkezelési lehetővé teszi külön API-kulcsok létrehozását különböző célokra. Minden kulcs lejárati időkeretet tartalmaz, és a kulcsot meghatározott csomagokra vagy glob-mintákra is alkalmazhatja. Az egyes kulcsokat adott műveletekhez is rendelheti: új csomagok és csomagverziók feltöltése, csak új csomagverziók feltöltése vagy a listából eltávolítás.

A hatókörkezeléssel API-kulcsokat hozhat létre a szervezet csomagjait kezelő különböző személyek számára, hogy csak a szükséges engedélyekkel rendelkezzenek.

További információ: hatókörön belüli API-kulcsok.

Közzététel a .NET CLI-vel vagy a NuGet parancssori felülettel

Az alábbi cli-eszközök mindegyike lehetővé teszi, hogy leküldjön egy csomagot a kiszolgálóra, és közzétegye azt. Válassza a CLI-eszköz fülét, .NET CLI vagy NuGet CLI.

A .NET CLI (dotnet.exe) használata ajánlott alternatíva a NuGet parancssori felület használata helyett.

A .nupkg fájlt tartalmazó mappában futtassa a következő parancsot. Adja meg a .nupkg fájlnevet, és cserélje le a kulcs értékét az API-kulcsra.

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

A kimenet a közzétételi folyamat eredményeit jeleníti meg:

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.

További információkért lásd: dotnet nuget push.

Jegyzet

Ha el szeretné kerülni, hogy a tesztcsomag elérhetővé váljon a nuget.org-on, a nuget.org tesztwebhelyére töltheti fel a https://int.nugettest.orgcímre. Vegye figyelembe, hogy előfordulhat, hogy az int.nugettest.org-ra feltöltött csomagok nem kerülnek megőrzésre.

Közzétételi hibák

A push parancs hibái általában a problémát jelzik. Előfordulhat például, hogy elfelejtette frissíteni a projekt verziószámát, ezért egy már létező csomagot próbál közzétenni.

Hibaüzenetek is megjelennek, ha az API-kulcs érvénytelen vagy lejárt, vagy ha olyan azonosítóval próbál csomagot közzétenni, amely már létezik a gazdagépen. Tegyük fel például, hogy az azonosító AppLogger-test már létezik nuget.org. Ha ezzel az azonosítóval próbál közzétenni egy csomagot, a push parancs a következő hibát adja:

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

Ha ezt a hibát kapja, ellenőrizze, hogy érvényes API-kulcsot használ-e, amely még nem járt le. Ha igen, a hiba azt jelzi, hogy a csomagazonosító már létezik a gazdagépen. A hiba kijavításához módosítsa a csomagazonosítót egyedire, építse újra a projektet, hozza létre újra a .nupkg fájlt, és próbálkozzon újra a push paranccsal.

A közzétett csomag kezelése

A csomag sikeres közzététele után megerősítő e-mailt kap. Az imént közzétett csomag megtekintéséhez a nuget.orgoldalon válassza ki a felhasználónevét a jobb felső sarokban, majd válassza a Csomagok kezeléselehetőséget.

Jegyzet

Eltarthat egy ideig, amíg a csomag indexelve lesz, és megjelenhet a keresési eredményekben, ahol mások is megtalálják. Ez idő alatt a csomag megjelenik Nem listozott csomagokalatt, és a csomag oldalán a következő üzenet jelenik meg:

Képernyőkép a nuget.org csomag feltöltésekor megjelenő közzétételi üzenetről.

Már közzétett egy NuGet-csomagot a nuget.org-on, amelyet más fejlesztők használhatnak a projektjeikben.

Ha olyan csomagot hozott létre, amely nem hasznos (például egy üres osztálytárral létrehozott mintacsomagot), vagy úgy dönt, hogy nem szeretné, hogy a csomag látható legyen, törölje a csomag listájáról, hogy elrejtse a keresési eredmények elől:

  1. Miután a csomag megjelenik Közzétett csomagok alatt a Csomagok kezelése lapon, válassza a csomaglista melletti ceruza ikont.

    Képernyőkép, amely a nuget.org egy csomaglistához tartozó Szerkesztés ikont jeleníti meg.

  2. A következő lapon válassza a Listalehetőséget, törölje a lista kijelölését a keresési eredmények jelölőnégyzetből, majd válassza a Mentéslehetőséget.

    Képernyőkép, amelyen egy csomag lista jelölőnégyzetének törlése látható a nuget.org.

A csomag mostantól a Nem listozott csomagok alatt jelenik meg Csomagok kezelése, és már nem jelenik meg a keresési eredmények között.

Jegyzet

Annak érdekében, hogy a tesztcsomag ne legyen elérhető a nuget.org oldalon, leküldheti a csomagot a https://int.nugettest.orgtesztwebhelyre. Vegye figyelembe, hogy az int.nugettest.org-ra feltöltött csomagok előfordulhat, hogy nem őrződnek meg.

Olvasófájl vagy más fájl hozzáadása

Ha közvetlenül meg szeretné adni a csomagban felvenni kívánt fájlokat, szerkessze a projektfájlt, és adja hozzá a content tulajdonságot:

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

Ebben a példában a tulajdonság egy readme.txt nevű fájlt határoz meg a projekt gyökérkönyvtárában. A Visual Studio közvetlenül a csomag telepítése után egyszerű szövegként jeleníti meg a fájl tartalmát. Az olvasási fájlok nem jelennek meg függőségként telepített csomagok esetében. Itt látható például a HtmlAgilityPack-csomag beolvasása:

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

Jegyzet

Ha csak hozzáadja a readme.txt elemet a projekt gyökeréhez anélkül, hogy beillesztené a projektfájl content tulajdonságába, az nem kerül bele a csomagba.

Megtalálhatóak NuGet-videók a(z) Channel 9 és a(z) YouTube.

Gratulálunk a NuGet-csomag Visual Studio .NET-osztálykódtár használatával történő létrehozásához. A következő cikkből megtudhatja, hogyan hozhat létre NuGet-csomagot a Visual Studio .NET-keretrendszerrel.

A NuGet által kínált további lehetőségekért tekintse meg az alábbi cikkeket: