Sdílet prostřednictvím


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, buď nuget.exe, nebo 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:

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říkaz AssemblyName.
  • Version je konkrétní číslo verze ve formuláři Major.Minor.Patch[-Suffix], kde -Suffix identifikuje předběžné verze. Pokud není zadána, je výchozí hodnota 1.0.0.
  • Authors jsou autoři balíčku. Pokud není zadána, výchozí hodnota je AssemblyName.
  • Company jsou informace o společnosti. Pokud není zadána, výchozí hodnota je Authors hodnota.
  • Product jsou informace o produktu. Pokud není zadána, výchozí hodnota je AssemblyName.

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íku ř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, PackageDescriptiona 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 PackageReferencesoubory projektu na závislosti v vytvořeném balíčku. Můžete řídit, které prostředky mají být zahrnuty prostřednictvím IncludeAssetsExcludeAssets 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:

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 názvosloví podobné .NET pomocí tečkové notace. Použijte například Contoso.Utility.UsefulStuff místo Contoso-Utility-UsefulStuff nebo Contoso_Utility_UsefulStuff. Je také užitečné pro zákazníky, pokud identifikátor balíčku odpovídá oboru 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 v Contoso.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> s hodnotou contentFiles. 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 řešení závislostí, nikoli verzemi 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 kompatibilní se sémantickým verzováním 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 záložce README na stránce balíčku na webu nuget.org. Popis se stáhne z <Description> v souboru projektu nebo z $description v 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://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>

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 rámci řešení zahrnuje všechny projekty v řešení, které lze sbalit, to znamená, že mají vlastnost nastavenou 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é nepoužívají jedinečné označení předběžné verze v každé kompilaci.

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: