NuGet
A NuGet a .NET-ökoszisztéma csomagkezelője, és elsődleges módja a fejlesztőknek a nyílt forráskódú .NET-kódtárak felderítésének és beszerzésének. NuGet.org, a Microsoft által biztosított ingyenes szolgáltatás, amely a nyilvános NuGet-csomagok elsődleges tárhelye, de közzétehet egyéni NuGet-szolgáltatásokra is, például a MyGet és a Azure Artifacts.
NuGet-csomag létrehozása
A NuGet-csomagok (*.nupkg
) egy zip-fájl, amely .NET-szerelvényeket és kapcsolódó metaadatokat tartalmaz.
A NuGet-csomagok létrehozásának két fő módja van. Az újabb és ajánlott módszer egy csomag létrehozása egy SDK-stílusú projektből (olyan projektfájlból, amelynek tartalma <Project Sdk="Microsoft.NET.Sdk">
kezdődik). A szerelvényeket és a célokat a rendszer automatikusan hozzáadja a csomaghoz, míg a fennmaradó metaadatok, mint például a csomag neve és a verziószám, az MSBuild fájlhoz kerülnek hozzáadásra. A dotnet pack
parancs összeállítása egy *.nupkg
fájlt ad ki szerelvények helyett.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AssemblyName>Contoso.Api</AssemblyName>
<PackageVersion>1.1.0</PackageVersion>
<Authors>John Doe</Authors>
</PropertyGroup>
</Project>
A NuGet-csomagok létrehozásának régebbi módja egy *.nuspec
fájl és a nuget.exe
parancssori eszköz. A nuspec-fájl nagyszerű irányítást biztosít, de gondosan meg kell adnia, hogy mely összetevőket és célokat vegye fel a végső NuGet-csomagba. Könnyen hibázhat, vagy ha valaki elfelejti frissíteni a nuspecet a módosítások végrehajtásakor. A nuspec előnye, hogy olyan Keretrendszerekhez hozhat létre NuGet-csomagokat, amelyek még nem támogatják az SDK-stílusú projektfájlokat.
✔️ FONTOLJA meg, hogy egy SDK-stílusú projektfájlt használ a NuGet-csomag létrehozásához.
Csomagfüggőségek
A NuGet-csomag függőségeit a Függőségek című cikkben találja.
Fontos NuGet-csomag metaadatai
A NuGet-csomagok számos metaadat-tulajdonságot támogatnak. Az alábbi táblázat tartalmazza azokat az alapvető metaadatokat, amelyeket az NuGet.org minden csomagjának biztosítania kell:
MSBuild tulajdonság neve | Nuspec név | Leírás |
---|---|---|
PackageId |
id |
A csomag azonosítója. Az azonosító előtagja lefoglalható, ha megfelel a feltételeknek. |
PackageVersion |
version |
NuGet-csomag verziója. További információ: NuGet-csomag verziója. |
Title |
title |
A csomag emberbarát címe. Alapértelmezés szerint a PackageId értékre van állítva. |
Description |
description |
A felhasználói felületen megjelenő csomag hosszú leírása. |
Authors |
authors |
A csomagkészítők vesszővel tagolt listája, amely megfelel a nuget.org profilneveinek. |
PackageTags |
tags |
A csomagot leíró címkék és kulcsszavak szóközzel vagy pontosvesszővel tagolt listája. A címkék a csomagok keresésekor használatosak. |
PackageIcon |
icon |
A csomag egy képének elérési útja, amelyet csomagikonként szeretne használni. Olvasson többet a icon metaadatok-ról. |
PackageProjectUrl |
projectUrl |
A projekt kezdőlapjának vagy forrásadattárának URL-címe. |
PackageLicenseExpression |
license |
A projektlicenc SPDX-azonosító. Csak az OSI és az FSF által jóváhagyott licencek használhatnak azonosítót. Más licenceknek PackageLicenseFile kell használniuk. További információ a license metaadatok. |
Fontos
Egy licenccel nem rendelkező projekt alapértelmezés szerint kizárólagos szerzői jog hatálya alá kerül, így mások jogszerűen nem használhatják azt.
✔️ FONTOLJA meg, hogy olyan NuGet-csomagnevet válasszon, amely megfelel a NuGet előtag-foglalási feltételeknek.
✔️ HASZNÁLJON HTTPS href-t a csomagikonhoz.
Az olyan webhelyek, mint NuGet.org https-kompatibilisen futnak, és egy nem HTTPS-rendszerkép megjelenítése vegyes tartalomra vonatkozó figyelmeztetést eredményez.
✔️ A DO egy 64x64-et tartalmazó csomagikonképet használ, és átlátszó háttérrel rendelkezik a legjobb megtekintési eredmények érdekében.
✔️ FONTOLJA meg a Source Link beállítását, hogy verziókövető metaadatokat adjon hozzá az összeállításokhoz és a NuGet-csomagokhoz.
A Forráshivatkozás automatikusan hozzáad
RepositoryUrl
ésRepositoryType
metaadatokat a NuGet-csomaghoz. A Source Link emellett információkat is ad arról a forráskódról, amelyből a csomag készült. Egy Git-adattárból létrehozott csomag például metaadatként hozzáadja a véglegesítési kivonatot.
Előzetes csomagok
A verzió utótaggal rendelkező NuGet-csomagok előzetes. Alapértelmezés szerint a NuGet Package Manager felhasználói felülete stabil kiadásokat jelenít meg, kivéve, ha a felhasználó a csomagok előrendelését választja, így a prerelease-csomagok ideálisak a korlátozott felhasználói teszteléshez.
<PackageVersion>1.0.1-beta1</PackageVersion>
Jegyzet
A stabil csomag nem függhet előzetes csomagtól. Saját csomagot kell előzetes verzióvá tenni, vagy egy régebbi stabil verziótól kell függenie.
✔️ Tegye közzé egy előzetes csomagot tesztelés, előnézet vagy kísérletezés során.
✔️ A DO közzétehet egy stabil csomagot, ha készen áll, hogy más stabil csomagok hivatkozhassák rá.
Szimbólumcsomagok
A szimbólumfájlokat (*.pdb
) a .NET fordítója állítja elő az assemblyk mellett. A szimbólumfájlok összekapcsolják a végrehajtási helyeket az eredeti forráskóddal, így a forráskód futtatása közben hibakeresővel végiglépkedhet rajta. A NuGet támogatja külön szimbólumcsomag (*.snupkg
) létrehozását, amely a .NET-szerelvényeket tartalmazó fő csomag mellett szimbólumfájlokat tartalmaz. A szimbólumcsomagok ötlete az, hogy egy szimbólumkiszolgálón vannak tárolva, és csak egy olyan eszköz tölti le őket, mint a Visual Studio, igény szerint.
NuGet.org saját szimbólumtárat üzemeltet. A fejlesztők használhatják a NuGet.org szimbólumkiszolgálón közzétett szimbólumokat, ha hozzáadják a https://symbols.nuget.org/download/symbols
-t a szimbólumforrásaikhoz a Visual Studio-ban.
Fontos
A NuGet.org szimbólumkiszolgáló csak az SDK-stílusú projektek által létrehozott (*.pdb
) új hordozható szimbólumfájlokat támogatja.
A NuGet.org szimbólumkiszolgáló használatához .NET-kódtár hibakereséséhez a fejlesztőknek a Visual Studio 2017 15.9-es vagy újabb verziójával kell rendelkezniük.
A szimbólumcsomagok létrehozásának alternatívája a szimbólumfájlok beágyazása a fő NuGet-csomagba. A fő NuGet-csomag nagyobb lesz, de a beágyazott szimbólumfájlok azt jelentik, hogy a fejlesztőknek nem kell konfigurálnia a NuGet.org szimbólumkiszolgálót. Ha A NuGet-csomagot SDK-stílusú projekt használatával készíti el, akkor a AllowedOutputExtensionsInPackageBuildOutputFolder
tulajdonság beállításával beágyazhat szimbólumfájlokat:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- Include symbol files (*.pdb) in the built .nupkg -->
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
</PropertyGroup>
</Project>
A szimbólumfájlok beágyazásának hátránya, hogy a csomag méretét körülbelül 30%-val növelik az SDK-stílusú projektek használatával összeállított .NET könyvtárak esetén. Ha a csomag mérete aggodalomra ad okot, akkor inkább egy szimbólumcsomagban kell közzétennie a szimbólumokat.
✔️ FONTOLJA meg a szimbólumok közzétételét szimbólumcsomagként a NuGet.org-on (*.snupkg
)
A szimbólumcsomagok (
*.snupkg
) jó igény szerinti hibakeresési élményt nyújtanak a fejlesztőknek anélkül, hogy a fő csomagméretet felbomlasztanák, és hatással vannak a visszaállítási teljesítményre azok számára, akik nem tervezik a NuGet-csomag hibakeresését.Előfordulhat, hogy a felhasználóknak meg kell keresniük és konfigurálniuk kell a NuGet szimbólumkiszolgálót az IDE-ben (egyszeri beállításként) a szimbólumfájlok lekéréséhez. A Visual Studio 2019 16.1-es verziója hozzáadta a NuGet.org szimbólumkiszolgálóját az alapértelmezett szimbólumkiszolgálók listájához.