dotnet Pack

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

Název

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

Přehled

dotnet pack [<PROJECT>|<SOLUTION>|<NUSPEC>|<FILE>]
    [--artifacts-path <ARTIFACTS_DIR>] [-c|--configuration <CONFIGURATION>]
    [--disable-build-servers] [--force] [--include-source] [--include-symbols]
    [--interactive] [--no-build] [--no-dependencies] [--no-restore] [--nologo]
    [-o|--output <OUTPUT_DIRECTORY>] [-p|--property:<PROPERTYNAME>=<VALUE>]
    [--runtime <RUNTIME_IDENTIFIER>]
    [-s|--serviceable] [--tl:[auto|on|off]] [-v|--verbosity <LEVEL>]
    [--version <VERSION>] [--version-suffix <VERSION_SUFFIX>]

dotnet pack -h|--help

Description

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

Počínaje .NET 10 můžete jako argument předat také soubor .nuspec nebo souborovou aplikaci (.cs). Když předáte soubor .nuspec , dotnet pack vytvoří balíček ze souboru .nuspec bez vyžadování souboru projektu a bez spuštění NÁSTROJE MSBuild. Když předáte souborovou aplikaci, dotnet pack zabalí ji bez souboru projektu.

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.

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 situacích, kdy explicitní obnovení dává smysl, například sestavení integrace kontinuá 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.

Arguments

PROJECT | SOLUTION | NUSPEC | FILE

Projekt, řešení, soubor .nuspec nebo souborová aplikace, která se má zabalit.

  • PROJECT je cesta k souboru .csproj, .vbprojnebo .fsproj souboru nebo adresáři obsahujícímu soubor projektu.

  • SOLUTION je cesta k souboru řešení (.sln nebo .slnx příponě) nebo k adresáři obsahujícímu soubor řešení.

  • NUSPEC je cesta k .nuspec souboru. Dostupné od .NET 10.

  • FILE je cesta k aplikaci založené na souborech (soubor C# bez odpovídajícího souboru projektu). Dostupné od .NET 10. Další informace najdete v tématu Vytváření souborových aplikací jazyka C#.

    Pokud není zadaný, příkaz vyhledá v aktuálním adresáři soubor projektu nebo řešení.

Možnosti

  • --artifacts-path <ARTIFACTS_DIR>

    Všechny výstupní soubory sestavení ze spuštěného příkazu budou v podsložkách pod zadanou cestou oddělenou projektem. Další informace naleznete v tématu Rozložení výstupu artefaktů. Tato možnost a zadaná hodnota musí být explicitně kaskádové v libovolném dotnet příkazu, který závisí na výstupu jiného dotnet příkazu, například při použití dotnet build --no-restore a dotnet publish --no-build. K dispozici od .NET 8 SDK.

  • -c|--configuration <CONFIGURATION>

    Definuje konfiguraci sestavení. Pokud vyvíjíte pomocí sady .NET 8 SDK nebo novější verze, použije příkaz ve výchozím nastavení konfiguraci Release 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á konfigurace vydané verze a 'dotnet pack' používá release configuration.

  • --disable-build-servers

    Vynutí příkaz ignorovat všechny trvalé buildové servery. Tato možnost poskytuje konzistentní způsob, jak zakázat veškeré použití ukládání sestavení do mezipaměti, což vynutí sestavení úplně od začátku. Sestavení, které nespoléhá na mezipaměti, je užitečné, když jsou mezipaměti z nějakého důvodu poškozené nebo nesprávné. K dispozici od .NET 7 SDK.

  • --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 .

  • --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í.

  • --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.

  • -p|--property:<PROPERTYNAME>=<VALUE>

    Nastaví jednu nebo více vlastností nástroje MSBuild. Při balení souboru .nuspec přímo, vlastnosti se používají k nahrazení tokenu v souboru .nuspec místo jako vlastnosti NÁSTROJE MSBuild. Zadejte více vlastností oddělených středníky nebo opakováním možnosti:

    --property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2>
    --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>
    

    Další informace naleznete v tématu NuGet pack target properties and MSBuild command-line reference.

  • --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 najdete v tématu .NET Blog: .NET Framework 4.5.1 podporuje aktualizace .NET zabezpečení od Microsoftu pro knihovny NuGet.

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

    Určuje, jestli se má pro výstup sestavení použít terminálový protokolovací nástroj . 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.

    Terminal Logger 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 .NET 8.

  • -v|--verbosity <LEVEL>

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

  • --version <VERSION>

    Verze balíčku, která se má vytvořit. Při balení souboru .nuspec přepíše číslo verze v souboru .nuspec .

    Poznámka:

    Dostupné od .NET 10.

  • --version-suffix <VERSION_SUFFIX>

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

    Vlastnosti s hodnotami Verze balíčku
    None 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.

  • -?|-h|--help

    Vytiskne popis použití příkazu.

Examples

  • 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 (přístup založený na projektu MSBuild):

    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í:

  • Zabalte soubor .nuspec přímo bez souboru projektu (.NET 10 a novější):

    dotnet pack MyPackage.nuspec --output ./artifacts
    
    ```dotnetcli
    dotnet pack MyPackage.nuspec --version 1.2.3 --output ./artifacts
    
  • Zabalte soubor .nuspec přímo a použijte nahrazení tokenu (.NET 10 a novější):

    dotnet pack MyPackage.nuspec --property:Version=1.2.3 --property:Configuration=Release --output ./artifacts