NuGet
NuGet je správce balíčků pro ekosystém .NET a je primárním způsobem, jak vývojáři hledají a získávají opensourcové knihovny .NET. NuGet.org, bezplatná služba poskytovaná Microsoftem pro hostování balíčků NuGet, je primárním hostitelem veřejných balíčků NuGet, ale můžete je publikovat do vlastních služeb NuGet, jako je MyGet a Azure Artifacts.
NuGet
Vytvoření balíčku NuGet
Balíček NuGet (*.nupkg
) je soubor ZIP, který obsahuje sestavení .NET a přidružená metadata.
Balíček NuGet můžete vytvořit dvěma hlavními způsoby. Novějším a doporučeným způsobem je vytvořit balíček z projektu ve stylu sady SDK (soubor projektu, jehož obsah začíná <Project Sdk="Microsoft.NET.Sdk">
). Sestavení a cíle se automaticky přidají do balíčku a zbývající metadata se přidají do souboru MSBuild, jako je název balíčku a číslo verze. Kompilace pomocí příkazu dotnet pack
místo sestavení vypíše soubor *.nupkg
.
<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>
Starší způsob vytvoření balíčku NuGet je se souborem *.nuspec
a nástrojem příkazového řádku nuget.exe
. Soubor nuspec poskytuje skvělou kontrolu, ale musíte pečlivě určit, jaká sestavení a cíle mají být zahrnuty do konečného balíčku NuGet. Je snadné udělat chybu nebo někdo zapomene aktualizovat "nuspec" při provádění změn. Nuspec má výhodu, že ho můžete použít k vytvoření balíčků NuGet pro architektury, které ještě nepodporují soubor projektu ve stylu sady SDK.
✔️ ZVAŽTE vytvoření balíčku NuGet pomocí souboru projektu ve stylu sady SDK.
Závislosti balíčků
Závislosti balíčků NuGet jsou podrobně popsány v článku Závislosti.
Důležitá metadata balíčku NuGet
Balíček NuGet podporuje mnoho vlastností metadat . Následující tabulka obsahuje základní metadata, která by měl poskytnout každý balíček na NuGet.org:
Název vlastnosti MSBuild | Název Nuspec | Popis |
---|---|---|
PackageId |
id |
Identifikátor balíčku. Předpona z identifikátoru může být vyhrazena, splňuje-li kritéria . |
PackageVersion |
version |
Verze balíčku NuGet Další informace viz verze balíčku NuGet. |
Title |
title |
Název balíčku, který je pro člověka přátelský. Výchozí hodnota je PackageId . |
Description |
description |
Dlouhý popis balíčku zobrazeného v uživatelském rozhraní. |
Authors |
authors |
Seznam autorů balíčků oddělený čárkami, který odpovídá názvům profilů v nuget.org. |
PackageTags |
tags |
Seznam značek a klíčových slov oddělených středníkem, které popisují balíček. Značky se používají při hledání balíčků. |
PackageIcon |
icon |
Cesta k obrázku v balíčku, která se má použít jako ikona balíčku. Přečtěte si další informace o metadatech aicon . |
PackageProjectUrl |
projectUrl |
Adresa URL domovské stránky projektu nebo zdrojového úložiště |
PackageLicenseExpression |
license |
Identifikátor licence projektu SPDX . Identifikátor může používat jenom schválené licence OSI a FSF. Jiné licence by měly používat PackageLicenseFile . Přečtěte si další informace o metadatech license . |
Důležitý
Projekt bez licence ve výchozím nastavení výhradních autorských práv, což znemožňuje použití jiným uživatelům.
✔️ ZVAŽTE výběr názvu balíčku NuGet s předponou, která splňuje kritéria pro rezervaci předpon NuGet .
✔️ Používejte odkaz HTTPS pro vaši ikonu balíčku.
Weby jako NuGet.org, které běží s povoleným HTTPS, a zobrazení obrázku bez tohoto protokolu způsobí upozornění na smíšený obsah.
✔️ Použijte obrázek ikony balíčku, který je 64x64 a má průhledné pozadí pro nejlepší zobrazení výsledků.
✔️ ZVAŽTE nastavení Source Link pro přidání metadat pro správu zdrojového kódu do vašich sestavení a balíčku NuGet.
Source Link automaticky přidává metadata
RepositoryUrl
aRepositoryType
do balíčku NuGet. Source Link také přidává informace o přesném zdrojovém kódu, ze které byl balíček sestaven. Například balíček vytvořený z úložiště Git bude obsahovat hodnotu hash potvrzení přidanou jako metadata.
Předběžné verze balíčků
Balíčky NuGet s příponou verze se považují za předběžné verze. Ve výchozím nastavení uživatelské rozhraní Správce balíčků NuGet zobrazuje stabilní verze, pokud si uživatel záměrně nevybere předběžné balíčky, takže předběžné balíčky jsou ideální pro omezené uživatelské testování.
<PackageVersion>1.0.1-beta1</PackageVersion>
Poznámka
Stabilní balíček nemůže záviset na předběžné verzi balíčku. Musíte buď vytvořit vlastní předběžnou verzi balíčku, nebo záviset na starší stabilní verzi.
✔️ Publikujte předběžnou verzi balíčku při testování, náhledu nebo experimentování.
✔️ Publikujte stabilní balíček, jakmile je připravený, aby na něj mohly odkazovat další stabilní balíčky.
Balíčky symbolů
Soubory symbolů (*.pdb
) jsou vytvářeny kompilátorem .NET společně se sestaveními. Soubory symbolů mapují místa provedení na původní zdrojový kód, abyste mohli procházet zdrojový kód při jeho spuštění pomocí ladicího programu. NuGet podporuje vytváření samostatného balíčku symbolů (*.snupkg
) obsahujícího soubory symbolů vedle hlavního balíčku s .NET sestaveními. Myšlenka balíčků symbolů spočívá v tom, že jsou hostovány na symbolovém serveru a stáhnou se pouze nástrojem, jako je Visual Studio, na vyžádání.
NuGet.org hostuje vlastní úložiště serverových symbolů . Vývojáři mohou používat symboly publikované na serveru symbolů NuGet.org přidáním https://symbols.nuget.org/download/symbols
do zdrojů symbolů v sadě Visual Studio.
Důležitý
Server symbolů NuGet.org podporuje pouze nové soubory přenosných symbolů (*.pdb
), které byly vytvořeny projekty ve stylu sady SDK.
Aby vývojáři mohli při ladění knihovny .NET používat server symbolů NuGet.org, musí mít Visual Studio 2017 verze 15.9 nebo novější.
Alternativou k vytvoření balíčku symbolů je vložení souborů symbolů do hlavního balíčku NuGet. Hlavní balíček NuGet bude větší, ale vložené soubory symbolů znamenají, že vývojáři nemusí konfigurovat server symbolů NuGet.org. Pokud vytváříte balíček NuGet pomocí projektu ve stylu sady SDK, můžete vložit soubory symbolů nastavením vlastnosti AllowedOutputExtensionsInPackageBuildOutputFolder
:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- Include symbol files (*.pdb) in the built .nupkg -->
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
</PropertyGroup>
</Project>
Nevýhodou vkládání souborů symbolů je, že zvětší velikost balíčku o přibližně 30% pro knihovny .NET kompilované pomocí projektů ve stylu sady SDK. Pokud jde o velikost balíčku, měli byste místo toho publikovat symboly v balíčku symbolů.
✔️ ZVAŽTE publikování symbolů jako balíčku symbolů (*.snupkg
) pro NuGet.org
Balíčky symbolů (
*.snupkg
) poskytují vývojářům dobré prostředí pro ladění na vyžádání, aniž by zvětšovali velikost hlavního balíčku a ovlivnili výkon obnovení pro ty, kteří neplánují ladit balíček NuGet.Upozornění spočívá v tom, že uživatelé možná budou muset najít a nakonfigurovat server symbolů NuGet ve svém integrovaném vývojovém prostředí (jako jednorázové nastavení), aby získali soubory symbolů. Visual Studio 2019 verze 16.1 přidalo server symbolů NuGet.org do seznamu výchozích serverů symbolů.