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>] [--artifacts-path <ARTIFACTS_DIR>]
[-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žkousrc
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 test
dotnet publish
a 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
--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ů. K dispozici od sady .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
Release
ve výchozím nastavení konfiguraci pro projekty, jejichž TargetFramework je nastavená nanet8.0
nebo novější verzi. Výchozí konfigurace sestavení jeDebug
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]
adiag[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 aVersionPrefix
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
Pouze1.0.0-$(VersionSuffix)
VersionPrefix
aVersionSuffix
$(VersionPrefix)-$(VersionSuffix)
Pokud chcete použít
--version-suffix
, zadejteVersionPrefix
a neVersion
v souboru projektu. PokudVersionPrefix
je0.1.2
a předáte--version-suffix rc.1
dotnet pack
ji, bude0.1.2-rc.1
verze balíčku .Pokud
Version
má hodnotu a předáte--version-suffix
dotnet pack
ji, 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
vlastnostPackageVersion
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
,NuspecBasePath
aNuspecProperties
, naleznete v následujících zdrojích informací: