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


NuGet-csomag létrehozása a dotnet parancssori felületével

A NuGet-csomagok olyan kódot tartalmaznak, amelyet a fejlesztők újra felhasználhatnak a projektjeikben. Függetlenül attól, hogy a kód mit tesz vagy tartalmaz, a NuGet-csomag létrehozásához parancssori eszközt nuget.exe vagy dotnet.exeeszközt kell használnia.

Ez a cikk bemutatja, hogyan hozhat létre csomagot a dotnet parancssori felületének használatával. A Visual Studio 2017-től kezdődően a dotnet CLI minden .NET- és .NET Core-számítási feladat részét képezi. Ha telepítenie kell a dotnet CLI-t vagy más NuGet-ügyféleszközöket, olvassa el a NuGet-ügyféleszközök telepítését.

Ez a témakör csak az SDK-stílusú formátumot használó .NET- és egyéb projektekre vonatkozik. Ezekben a projektekben a NuGet a projektfájlból származó információkat használja egy csomag létrehozásához. A rövid útmutatókért tekintse meg a Csomagok létrehozása a dotnet parancssori felületével vagy a Csomagok létrehozása a Visual Studióval című témakört.

Az MSBuild msbuild -t:pack parancs funkcionálisan egyenértékű a dotnet-csomaggal. További információ az MSBuild használatával történő csomag létrehozásáról: NuGet-csomag létrehozása az MSBuild használatával.

Megjegyzés:

Tulajdonságok beállítása

A parancs használatával dotnet new classlib létrehozhat egy példaosztálytár-projektet, és a projektbe becsomagolhatja a projektet a paranccsal dotnet pack. A dotnet pack parancs a következő tulajdonságokat használja. Ha nem ad meg értékeket a projektfájlban, a parancs alapértelmezett értékeket használ.

  • PackageIda csomagazonosítónak egyedinek kell lennie nuget.org és a csomagot üzemeltető egyéb célok között. Ha nem ad meg értéket, a parancs az alapértelmezett AssemblyName-et használja.
  • Version egy adott verziószám az űrlapon Major.Minor.Patch[-Suffix], amely -Suffix azonosítja az előzetes verziókat. Ha nincs megadva, az alapértelmezett érték a következő 1.0.0: .
  • Authors a csomag szerzői. Ha nincs megadva, az alapértelmezett érték a AssemblyName.
  • Company vállalati információ. Ha nincs megadva, az alapértelmezett érték az Authors érték.
  • Product termékinformáció. Ha nincs megadva, az alapértelmezett érték a AssemblyName.

A Visual Studióban ezeket az értékeket a projekt tulajdonságaiban állíthatja be. Kattintson a jobb gombbal a projektre a Megoldáskezelőben, válassza a Tulajdonságok lehetőséget, majd válassza a Csomag szakaszt. A tulajdonságokat közvetlenül is hozzáadhatja a .csprojhoz vagy más projektfájlhoz.

Az alábbi példa egy projektfájlt mutat be, amely hozzá van adva csomagtulajdonságokkal.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <PackageId>UniqueID</PackageId>
    <Version>1.0.0</Version>
    <Authors>Author Name</Authors>
    <Company>Company Name</Company>
    <Product>Product Name</Product>
  </PropertyGroup>
</Project>

További választható tulajdonságokat is hozzáadhat, például Title: , PackageDescriptionés PackageTags.

Megjegyzés:

A nyilvános fogyasztásra készült csomagok esetében különös figyelmet kell fordítani a PackageTags tulajdonságra. A címkék segítenek másoknak megtalálni a csomagot, és megérteni, hogy mit csinál.

A dotnet pack parancs automatikusan átalakítja a PackageReference elemeket a projektfájlokban függőségekké a létrehozott csomagban. Szabályozhatja, hogy mely objektumok szerepeljenek a , IncludeAssets és ExcludeAssets a PrivateAssetscímkék használatával. További információ: Függőségi eszközök szabályozása.

További információ a függőségekről, az opcionális tulajdonságokról és a verziószámozásról:

Válasszon egyedi csomagazonosítót, és állítsa be a verziószámot

A csomagazonosító és a verziószám egyedileg azonosítja a csomagban található pontos kódot.

Kövesse az alábbi ajánlott eljárásokat a csomagazonosító létrehozásához:

  • Az azonosítónak egyedinek kell lennie nuget.org és a csomagot üzemeltető összes többi helyen. Az ütközések elkerülése érdekében érdemes a cég nevét használni az azonosító első részeként.

  • Kövesse a .NET-névtérhez hasonló elnevezési konvenciót pont jelöléssel. Például használja Contoso.Utility.UsefulStuff ahelyett Contoso-Utility-UsefulStuff vagy Contoso_Utility_UsefulStuff. A felhasználók számára is hasznos, ha a csomagazonosítót a kód által használt névtérrel egyezteti.

  • Ha olyan mintakódot tartalmazó csomagot hoz létre, amely bemutatja, hogyan használható egy másik csomag, fűzze hozzá a .Sample-t az azonosítóhoz, ahogyan a Contoso.Utility.UsefulStuff.Sample-nál.

    A mintacsomag függőséget mutat az eredeti csomagtól. A mintacsomag létrehozásakor adja hozzá a <IncludeAssets>-t az contentFiles értékkel. A tartalommappában rendezze el a mintakódot egy \Samples\<identifier> nevű mappában, például \Samples\Contoso.Utility.UsefulStuff.Sample.

A csomagverzió beállításához kövesse az alábbi ajánlott eljárásokat:

  • Általában állítsa be a csomag verzióját a projekt vagy a szerelvény verziójának megfelelőre, bár ez nem feltétlenül szükséges. A verzió illesztése egyszerű, ha a csomagot egyetlen összeállításra korlátozni. Maga a NuGet a csomagverziókkal foglalkozik a függőségek feloldásakor, nem pedig a szerelvényverziókkal.

  • Ha nem szabványos verziósémát használ, mindenképpen vegye figyelembe a NuGet verziószámozási szabályait a csomagverzió-használatban leírtak szerint. A NuGet többnyire Szemantikai verziószámozás 2.0.0-val kompatibilis.

Megjegyzés:

A függőségfeloldással kapcsolatos további információkért lásd: Függőségfeloldás PackageReference használatával. A verziószámozás megértését segítő információkért tekintse meg ezt a blogbejegyzés-sorozatot:

Opcionális leírásmező hozzáadása

A csomag opcionális leírása megjelenik a csomag nuget.org oldalÁNAK README lapján. A leírás kivonatolja a <Description> projektfájlból vagy a $description.nuspec fájlból.

Az alábbi példa egy Description .NET-csomag .csproj fájljában látható:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <PackageId>Azure.Storage.Blobs</PackageId>
    <Version>12.4.0</Version>
    <PackageTags>Microsoft Azure Storage Blobs;Microsoft;Azure;Blobs;Blob;Storage;StorageScalable</PackageTags>
    <Description>
      This client library enables working with the Microsoft Azure Storage Blob service for storing binary and text data.
      For this release see notes - https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/storage/Azure.Storage.Blobs/README.md and https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/storage/Azure.Storage.Blobs/CHANGELOG.md
      in addition to the breaking changes https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/storage/Azure.Storage.Blobs/BreakingChanges.txt
      Microsoft Azure Storage quickstarts and tutorials - https://learn.microsoft.com/azure/storage/
      Microsoft Azure Storage REST API Reference - https://learn.microsoft.com/rest/api/storageservices/
      REST API Reference for Blob Service - https://learn.microsoft.com/rest/api/storageservices/blob-service-rest-api
    </Description>
  </PropertyGroup>
</Project>

A csomag parancs futtatása

A NuGet-csomag vagy a .nupkg fájl létrehozásához futtassa a dotnet pack parancsot a projektmappából, amely szintén automatikusan létrehozza a projektet.

dotnet pack

A kimenet a .nupkg fájl elérési útját jeleníti meg:

MSBuild version 17.3.0+92e077650 for .NET
  Determining projects to restore...
  Restored D:\proj\AppLoggerNet\AppLogger\AppLogger.csproj (in 97 ms).
  Successfully created package 'D:\proj\AppLoggerNet\AppLogger\bin\Debug\AppLogger.1.0.0.nupkg'.

Build elkészítésekor automatikusan generáljon csomagot

Amikor a dotnet pack-t futtatja, automatikusan fusson a dotnet build, adja hozzá a következő sort a projektfájl <PropertyGroup> címkéjébe:

<GeneratePackageOnBuild>true</GeneratePackageOnBuild>

Megjegyzés:

Amikor automatikusan létrehozza a csomagot, a csomagolás növeli a projekt buildelési idejét.

A dotnet pack futtatása a megoldás összes csomagolható projektjét összecsomagolja, vagyis a IsPackable tulajdonság értéke true.

Csomag telepítésének tesztelése

Mielőtt közzétesz egy csomagot, tesztelje a csomag projektbe való telepítését. A tesztelés biztosítja, hogy a szükséges fájlok a projekt megfelelő helyeihez kerülnek.

Tesztelje a telepítést manuálisan a Visual Studióban vagy a parancssorban a normál csomagtelepítési folyamattal.

Fontos

  • A csomagok létrehozása után nem módosíthatók. Ha kijavít egy hibát, módosítsa a csomag tartalmát, és csomagolja újra.

  • A csomag újbóli létrehozása után az újratesztelés továbbra is a csomag régi verzióját használja, amíg el nem törli a globális csomagok mappáját. A mappa törlése különösen fontos az olyan csomagok esetében, amelyek nem használnak egyedi előzetes címkét minden builden.

Következő lépések

A csomag létrehozása után közzéteheti a .nupkg fájlt a választott gazdagépen.

A csomag képességeinek bővítésére vagy más forgatókönyvek támogatására az alábbi cikkekben olvashat: