Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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:
Ha nem SDK-stílusú projektekhez, általában .NET-keretrendszer-projektekhez szeretne csomagokat létrehozni és közzétenni, olvassa el a csomag létrehozása a nuget.exe parancssori felület használatával , vagy csomag létrehozása és közzététele a Visual Studio (.NET-keretrendszer) használatával.
A packages.config-ból PackageReference-be migrált projektekhez használja a következőt
msbuild -t:pack: . További információ: Csomag létrehozása a migrálás után.
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értelmezettAssemblyName-et használja. -
Versionegy adott verziószám az űrlaponMajor.Minor.Patch[-Suffix], amely-Suffixazonosítja az előzetes verziókat. Ha nincs megadva, az alapértelmezett érték a következő1.0.0: . -
Authorsa csomag szerzői. Ha nincs megadva, az alapértelmezett érték aAssemblyName. -
Companyvállalati információ. Ha nincs megadva, az alapértelmezett érték azAuthorsérték. -
Producttermékinformáció. Ha nincs megadva, az alapértelmezett érték aAssemblyName.
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:
- Csomaghivatkozások projektfájlokban
- Csomag verziószámozása
- NuGet-metaadatok tulajdonságai
- MSBuild csomag-célok
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.UsefulStuffahelyettContoso-Utility-UsefulStuffvagyContoso_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 aContoso.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 azcontentFilesé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:
- Csomag verziószámozása
- Több cél-keretrendszer támogatása
- Adjon hozzá csomagikont
- Forrás- és konfigurációs fájlok átalakítása
- Lokalizáció
- Előzetes verziók
- Csomagtípus beállítása
- MSBuild kellékek és célok
- Csomagok létrehozása COM interop szerelvényekkel
- Natív csomagok létrehozása
- Szimbólumcsomagok létrehozása (.snupkg)