dotnet pack

Tento článek se vztahuje na: ✔️ .NET Core 3.1 SDK a novější verze

Název

dotnet pack – Zabalí kód do balíčku NuGet.

Synopse

dotnet pack [<PROJECT>|<SOLUTION>] [-c|--configuration <CONFIGURATION>]
    [--force] [--include-source] [--include-symbols] [--interactive]
    [--no-build] [--no-dependencies] [--no-restore] [--nologo]
    [-o|--output <OUTPUT_DIRECTORY>] [--runtime <RUNTIME_IDENTIFIER>]
    [-s|--serviceable] [--tl:[auto|on|off]] [-v|--verbosity <LEVEL>]
    [--version-suffix <VERSION_SUFFIX>]

dotnet pack -h|--help

Popis

Příkaz dotnet pack sestaví projekt a vytvoří balíčky NuGet. Výsledkem tohoto příkazu je balíček NuGet (tj . soubor .nupkg ).

Pokud chcete vygenerovat balíček, který obsahuje symboly ladění, máte k dispozici dvě možnosti:

  • --include-symbols - vytvoří balíček symbolů.
  • --include-source – vytvoří balíček symbolů se složkou src uvnitř obsahující zdrojové soubory.

Závislosti NuGet zabaleného projektu se přidají do souboru .nuspec , takže se správně přeloží při instalaci balíčku. Pokud má zabalený projekt odkazy na jiné projekty, ostatní projekty se do balíčku nezahrnou. V současné době musíte mít balíček pro každý projekt, pokud máte závislosti mezi projekty.

Ve výchozím nastavení dotnet pack sestaví projekt jako první. Pokud se chcete tomuto chování vyhnout, předejte možnost --no-build . Tato možnost je často užitečná ve scénářích sestavení kontinuální integrace (CI), ve kterých víte, že kód byl dříve sestaven.

Poznámka:

V některých případech nelze implicitní sestavení provést. K tomu může dojít, když GeneratePackageOnBuild je nastavena, aby se zabránilo cyklické závislosti mezi cíli sestavení a balíčku. Sestavení může také selhat, pokud existuje uzamčený soubor nebo jiný problém.

Vlastnosti dotnet pack nástroje MSBuild můžete zadat příkazu pro proces balení. Další informace naleznete v tématu NuGet pack cílové vlastnosti a MSBuild Command-Line Reference. V části Příklady se dozvíte, jak použít přepínač MSBuild -p pro několik různých scénářů.

Poznámka:

Webové projekty nejsou zabalitelné.

Implicitní obnovení

Nemusíte spouštětdotnet restore, protože se spouští implicitně všemi příkazy, které vyžadují obnovení, například dotnet new, , dotnet build, dotnet run, dotnet testdotnet publisha dotnet pack. Pokud chcete zakázat implicitní obnovení, použijte tuto --no-restore možnost.

Příkaz dotnet restore je stále užitečný v určitých scénářích, kdy explicitní obnovení dává smysl, například sestavení kontinuální integrace ve službě Azure DevOps Services nebo v systémech sestavení, které potřebují explicitně řídit, kdy dojde k obnovení.

Informace o správě informačních kanálů NuGet najdete v dotnet restore dokumentaci.

Tento příkaz podporuje dotnet restore možnosti, které jsou předány v dlouhém formátu (například --source). Krátké možnosti formuláře, například -s, nejsou podporovány.

Stažení manifestu úloh

Při spuštění tohoto příkazu zahájí asynchronní stahování reklamních manifestů pro úlohy. Pokud stahování po dokončení tohoto příkazu stále běží, stahování se zastaví. Další informace naleznete v tématu Reklamní manifesty.

Argumenty

PROJECT | SOLUTION

Projekt nebo řešení, které se má zabalit. Je to cesta k souboru csproj, vbproj nebo fsproj nebo k souboru řešení nebo adresáři. Pokud není zadaný, příkaz vyhledá v aktuálním adresáři soubor projektu nebo řešení.

Možnosti

  • -c|--configuration <CONFIGURATION>

    Definuje konfiguraci sestavení. Pokud vyvíjíte pomocí sady .NET 8 SDK nebo novější verze, použije příkaz Release ve výchozím nastavení konfiguraci pro projekty, jejichž TargetFramework je nastavená na net8.0 nebo novější verzi. Výchozí konfigurace sestavení je Debug pro starší verze sady SDK a pro starší cílové architektury. Výchozí nastavení projektu můžete přepsat nebo můžete použít tuto možnost. Další informace najdete v tématu dotnet publish používá konfiguraci vydané verze a sada dotnet pack používá konfiguraci vydané verze.

  • --force

    Vynutí vyřešení všech závislostí, i když bylo poslední obnovení úspěšné. Určení tohoto příznaku je stejné jako odstranění souboru project.assets.json .

  • -?|-h|--help

    Vytiskne popis použití příkazu.

  • --include-source

    Obsahuje symboly ladění balíčků NuGet kromě běžných balíčků NuGet ve výstupním adresáři. Zdrojové soubory jsou součástí src složky v balíčku symbolů.

  • --include-symbols

    Obsahuje symboly ladění balíčků NuGet kromě běžných balíčků NuGet ve výstupním adresáři.

  • --interactive

    Umožňuje příkazu zastavit a čekat na uživatelský vstup nebo akci. Například k dokončení ověřování. K dispozici od sady .NET Core 3.0 SDK.

  • --no-build

    Nevystaví projekt před zabalením. Příznak také implicitně nastaví --no-restore .

  • --no-dependencies

    Ignoruje odkazy projektu na projekt a obnoví pouze kořenový projekt.

  • --no-restore

    Při spuštění příkazu nespustí implicitní obnovení.

  • --nologo

    Nezobrazuje úvodní banner ani zprávu o autorských právech.

  • -o|--output <OUTPUT_DIRECTORY>

    Umístí předdefinované balíčky do zadaného adresáře.

    • .NET 7.0.200 SDK

      Pokud v sadě SDK 7.0.200 zadáte --output možnost při spuštění tohoto příkazu v řešení, rozhraní příkazového řádku vygeneruje chybu. Jedná se o regresi a byla opravena ve verzi 7.0.201 a novějších verzích sady .NET SDK.

  • --runtime <RUNTIME_IDENTIFIER>

    Určuje cílový modul runtime pro obnovení balíčků. Seznam identifikátorů runtime (RID) najdete v katalogu RID.

  • -s|--serviceable

    Nastaví příznak serviceable v balíčku. Další informace naleznete v tématu .NET Blog: .NET Framework 4.5.1 Podporuje Microsoft Security Aktualizace pro knihovny NuGet .NET.

  • --tl:[auto|on|off]

    Určuje, jestli se má protokolovací nástroj terminálu použít pro výstup sestavení. Výchozí hodnota je auto, která nejprve ověří prostředí před povolením protokolování terminálu. Prostředí ověřuje, že terminál dokáže používat moderní výstupní funkce a nepoužívá přesměrovaný standardní výstup, než povolí nový protokolovací modul. on přeskočí kontrolu prostředí a povolí protokolování terminálu. off přeskočí kontrolu prostředí a použije výchozí protokolovací nástroj konzoly.

    Protokolovací nástroj terminálu ukazuje fázi obnovení následovanou fází sestavení. Během každé fáze se aktuálně stavební projekty zobrazují v dolní části terminálu. Každý projekt, který vytváří výstupy cíle NÁSTROJE MSBuild, který se právě sestavuje, i dobu strávenou na daném cíli. Další informace o sestavení najdete v těchto informacích. Po dokončení sestavení projektu se zapíše jeden oddíl "sestavení dokončeno", který zachycuje:

    • Název sestaveného projektu.
    • Cílová architektura (pokud je cílená na více cílů).
    • Stav tohoto sestavení.
    • Primární výstup tohoto sestavení (který je hypertextový odkaz).
    • Všechna diagnostika vygenerovaná pro tento projekt.

    Tato možnost je dostupná od verze .NET 8.

  • -v|--verbosity <LEVEL>

    Nastaví úroveň podrobností příkazu. Povolené hodnoty jsou q[uiet], , n[ormal]m[inimal], d[etailed]a diag[nostic]. Další informace najdete na webu LoggerVerbosity.

  • --version-suffix <VERSION_SUFFIX>

    Definuje hodnotu vlastnosti VersionSuffix MSBuild. Účinek této vlastnosti na verzi balíčku závisí na hodnotách a VersionPrefix vlastnostechVersion, jak je znázorněno v následující tabulce:

    Vlastnosti s hodnotami Verze balíčku
    Nic 1.0.0
    Version $(Version)
    VersionPrefix Pouze $(VersionPrefix)
    VersionSuffix Pouze 1.0.0-$(VersionSuffix)
    VersionPrefix a VersionSuffix $(VersionPrefix)-$(VersionSuffix)

    Pokud chcete použít --version-suffix, zadejte VersionPrefix a ne Version v souboru projektu. Pokud VersionPrefix je 0.1.2 a předáte --version-suffix rc.1dotnet packji, bude 0.1.2-rc.1verze balíčku .

    Pokud Version má hodnotu a předáte --version-suffixdotnet packji, hodnota zadaná pro --version-suffix je ignorována.

Příklady

  • Zabalte projekt do aktuálního adresáře:

    dotnet pack
    
  • Zabalte app1 projekt:

    dotnet pack ~/projects/app1/project.csproj
    
  • Zabalte projekt do aktuálního adresáře a umístěte výsledné balíčky do nupkgs složky:

    dotnet pack --output nupkgs
    
  • Zabalte projekt v aktuálním adresáři do nupkgs složky a přeskočte krok sestavení:

    dotnet pack --no-build --output nupkgs
    
  • S příponou verze projektu nakonfigurovanou jako <VersionSuffix>$(VersionSuffix)</VersionSuffix> v souboru .csproj zabalte aktuální projekt a aktualizujte výslednou verzi balíčku s danou příponou:

    dotnet pack --version-suffix "ci-1234"
    
  • Nastavte verzi balíčku na 2.1.0 vlastnost PackageVersion MSBuild:

    dotnet pack -p:PackageVersion=2.1.0
    
  • Zabalte projekt pro konkrétní cílovou architekturu:

    dotnet pack -p:TargetFrameworks=net45
    
  • Zabalte projekt a pro operaci obnovení použijte konkrétní modul runtime (Windows):

    dotnet pack --runtime win-x64
    
  • Zabalte projekt pomocí souboru .nuspec :

    dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nuget
    

    Informace o tom, jak používat NuspecFile, NuspecBasePatha NuspecProperties, naleznete v následujících zdrojích informací: