Vytvoření balíčku NuGet pomocí rozhraní příkazového řádku dotnet
Balíčky NuGet obsahují kód, který můžou vývojáři ve svých projektech opakovaně používat. Bez ohledu na to, co váš kód dělá nebo obsahuje, použijete k vytvoření balíčku NuGet nástroj příkazového řádku nebo nuget.exe
dotnet.exe
.
Tento článek popisuje, jak vytvořit balíček pomocí rozhraní příkazového řádku dotnet. Počínaje sadou Visual Studio 2017 je rozhraní příkazového řádku dotnet součástí všech úloh .NET a .NET Core. Pokud potřebujete nainstalovat rozhraní příkazového řádku dotnet nebo jiné klientské nástroje NuGet, přečtěte si téma Instalace klientských nástrojů NuGet.
Toto téma platí jenom pro .NET a další projekty, které používají formát ve stylu sady SDK. V těchto projektech nuGet k vytvoření balíčku používá informace ze souboru projektu. Kurzy pro rychlý start najdete v tématu Vytváření balíčků pomocí rozhraní příkazového řádku dotnet nebo vytváření balíčků pomocí sady Visual Studio.
Příkaz MSBuild msbuild -t:pack je funkčně ekvivalentní sadě dotnet pack. Další informace o vytvoření balíčku pomocí nástroje MSBuild naleznete v tématu Vytvoření balíčku NuGet pomocí nástroje MSBuild.
Poznámka:
Pokud chcete vytvářet a publikovat balíčky pro projekty ve stylu sady SDK, obvykle projekty .NET Framework, přečtěte si téma Vytvoření balíčku pomocí rozhraní příkazového řádku nuget.exe nebo vytvoření a publikování balíčku pomocí sady Visual Studio (.NET Framework).
Pro projekty migrované z packages.config do PackageReference použijte
msbuild -t:pack
. Další informace najdete v tématu Vytvoření balíčku po migraci.
Nastavení vlastností
Pomocí příkazu můžete vytvořit ukázkový projekt dotnet new classlib
knihovny tříd a zabalit projekt pomocí dotnet pack
. Příkaz dotnet pack
používá následující vlastnosti. Pokud v souboru projektu nezadáte hodnoty, použije příkaz výchozí hodnoty.
PackageId
, identifikátor balíčku musí být jedinečný napříč nuget.org a všemi dalšími cíli, které hostují balíček. Pokud nezadáte hodnotu, použije příkazAssemblyName
.Version
je konkrétní číslo verze ve formulářiMajor.Minor.Patch[-Suffix]
, kde-Suffix
identifikuje předběžné verze. Pokud není zadána, je výchozí hodnota1.0.0
.Authors
jsou autoři balíčku. Pokud není zadána, výchozí hodnota jeAssemblyName
.Company
jsou informace o společnosti. Pokud není zadána, výchozí hodnota jeAuthors
hodnota.Product
jsou informace o produktu. Pokud není zadána, výchozí hodnota jeAssemblyName
.
V sadě Visual Studio můžete tyto hodnoty nastavit ve vlastnostech projektu. Klikněte pravým tlačítkem myši na projekt v Průzkumník řešení, vyberte Vlastnosti a pak vyberte oddíl Balíček. Vlastnosti můžete přidat také přímo do souboru .csproj nebo jiného projektu.
Následující příklad ukazuje soubor projektu s přidanými vlastnostmi balíčku.
<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>
Můžete přidat další volitelné vlastnosti, například Title
, PackageDescription
a PackageTags
.
Poznámka:
U balíčků, které vytváříte pro veřejnou spotřebu, věnujte zvláštní pozornost vlastnosti PackageTags
. Značky pomáhají ostatním najít váš balíček a pochopit, co to dělá.
Příkaz dotnet pack
automaticky převede PackageReference
soubory projektu na závislosti v vytvořeném balíčku. Můžete řídit, které prostředky mají být zahrnuty prostřednictvím IncludeAssets
ExcludeAssets
a PrivateAssets
značek. Další informace naleznete v tématu Řízení prostředků závislostí.
Další informace o závislostech, volitelných vlastnostech a správě verzí najdete tady:
- Odkazy na balíčky v souborech projektů
- Správa verzí balíčků
- Vlastnosti metadat NuGet
- Cíle sady MSBuild
Zvolte jedinečný identifikátor balíčku a nastavte číslo verze.
Identifikátor balíčku a číslo verze jednoznačně identifikují přesný kód obsažený v balíčku.
Pokud chcete vytvořit identifikátor balíčku, postupujte podle těchto osvědčených postupů:
Identifikátor musí být jedinečný napříč nuget.org a všemi ostatními umístěními, která hostují balíček. Aby nedocházelo ke konfliktům, dobrým vzorem je použít název vaší společnosti jako první část identifikátoru.
Postupujte podle konvence vytváření názvů podobných oboru názvů .NET pomocí zápisu tečky. Použijte například
Contoso.Utility.UsefulStuff
místoContoso-Utility-UsefulStuff
neboContoso_Utility_UsefulStuff
. Je také užitečné pro uživatele, pokud odpovídá identifikátoru balíčku s oborem názvů, který kód používá.Pokud vytvoříte balíček vzorového kódu , který ukazuje, jak použít jiný balíček, připojte
.Sample
k identifikátoru, jako vContoso.Utility.UsefulStuff.Sample
.Ukázkový balíček má závislost na původním balíčku. Při vytváření ukázkového balíčku přidejte
<IncludeAssets>
hodnotucontentFiles
. Ve složce obsahu uspořádejte vzorový kód do složky s názvem \Samples\<identifier>, například \Samples\Contoso.Utility.UsefulStuff.Sample.
Pokud chcete nastavit verzi balíčku, postupujte podle těchto osvědčených postupů:
Obecně platí, že verze balíčku odpovídá verzi projektu nebo sestavení, i když to není nezbytně nutné. Porovnávání verze je jednoduché, když omezíte balíček na jedno sestavení. NuGet se zabývá verzemi balíčků při překladu závislostí, nikoli verzí sestavení.
Pokud používáte nestandardní schéma verzí, nezapomeňte zvážit pravidla správy verzí NuGet, jak je vysvětleno ve správě verzí balíčků. NuGet je většinou sémantická správa verzí kompatibilní s 2.0.0.
Poznámka:
Další informace o řešení závislostí najdete v tématu Řešení závislostí pomocí PackageReference. Informace, které vám můžou pomoct pochopit správu verzí, najdete v této sérii blogových příspěvků:
Přidání volitelného pole popisu
Volitelný popis balíčku se zobrazí na kartě README na stránce nuget.org balíčku. Popis se stáhne ze <Description>
souboru projektu nebo $description
ze souboru .nuspec.
Následující příklad ukazuje Description
v souboru .csproj pro balíček .NET:
<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://video2.skills-academy.com/azure/storage/
Microsoft Azure Storage REST API Reference - https://video2.skills-academy.com/rest/api/storageservices/
REST API Reference for Blob Service - https://video2.skills-academy.com/rest/api/storageservices/blob-service-rest-api
</Description>
</PropertyGroup>
</Project>
Spuštění příkazu pack
Chcete-li sestavit balíček NuGet nebo soubor .nupkg , spusťte příkaz dotnet pack ze složky projektu, která také automaticky sestaví projekt.
dotnet pack
Výstup ukazuje cestu k souboru .nupkg :
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'.
Automatické generování balíčku při sestavení
Pokud chcete automaticky spustit dotnet pack
při každém spuštění dotnet build
, přidejte do souboru projektu do značky <PropertyGroup>
následující řádek:
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
Poznámka:
Při automatickém vygenerování balíčku se doba sestavení projektu zvýší.
Spuštění dotnet pack
v balíčku řešení všechny projekty v řešení, které jsou sbalitelné, to znamená, mají vlastnost nastavena IsPackable
na true
.
Instalace testovacího balíčku
Před publikováním balíčku byste měli otestovat instalaci balíčku do projektu. Testování zajišťuje, aby potřebné soubory skončily na jejich správných místech v projektu.
Otestujte instalaci ručně v sadě Visual Studio nebo na příkazovém řádku pomocí normálního procesu instalace balíčku.
Důležité
Balíčky nelze po vytvoření změnit. Pokud problém opravíte, změňte obsah balíčku a znovu ho zabalte.
Po opětovném vytvoření balíčku bude opětovné otestování stále používat starou verzi balíčku, dokud nesmazáte složku globálních balíčků. Vymazání složky je zvlášť důležité pro balíčky, které v každém sestavení nepoužívají jedinečný popisek předběžné verze.
Další kroky
Jakmile balíček vytvoříte, můžete soubor .nupkg publikovat na hostitele podle svého výběru.
V následujících článcích najdete způsoby, jak rozšířit možnosti balíčku nebo podporovat jiné scénáře:
- Správa verzí balíčků
- Podpora více cílových architektur
- Ikona Přidat balíček
- Transformace zdrojových a konfiguračních souborů
- Lokalizace
- Předběžné verze
- Nastavení typu balíčku
- Props a cíle nástroje MSBuild
- Vytváření balíčků pomocí sestavení zprostředkovatele komunikace s objekty COM
- Vytváření nativních balíčků
- Vytváření balíčků symbolů (.snupkg)