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


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

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 PackageLicenseFilekell 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 és RepositoryType 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.

NuGet előzetes kiadású csomagfüggőség

✔️ 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.