Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Když z kódu vytvoříte balíček NuGet, zabalíte tuto funkci do komponenty, se kterou se dá sdílet a používat libovolný počet dalších vývojářů. Tento článek popisuje, jak vytvořit balíček pomocí nástroje MSBuild. Nástroj MSBuild je předinstalovaný se každou úlohou sady Visual Studio, která obsahuje NuGet. Kromě toho můžete msBuild použít také prostřednictvím rozhraní příkazového řádku dotnet s nástrojem dotnet msbuild.
Pro projekty .NET Core a .NET Standard, které používají formát sady SDK a všechny ostatní projekty ve stylu sady SDK, nuGet používá informace v souboru projektu přímo k vytvoření balíčku. Pro projekt, který nepoužívá sadu SDK, který používá <PackageReference>, NuGet také používá soubor projektu k vytvoření balíčku.
Projekty ve stylu sady SDK mají ve výchozím nastavení k dispozici funkce balíčku. Pro projekty PackageReference bez sady SDK je ve výchozím nastavení k dispozici od sady Visual Studio 2026. V dřívějších verzích sady Visual Studio je potřeba přidat balíček NuGet.Build.Tasks.Pack do závislostí projektu a doporučujeme odebrat tento odkaz na balíček při upgradu na Visual Studio 2026. Podrobné informace o cílech MSBuild balíčku naleznete v NuGet balíček a obnovení jako MSBuild cíle.
U projektů ve stylu sady SDK je msbuild -t:pack funkčně ekvivalentní k dotnet pack.
Důležité
Toto téma se týká projektů ve stylu sady SDK , obvykle projektů .NET Core a .NET Standard a projektů jiných než SDK, které používají PackageReference.
Nastavení vlastností
K vytvoření balíčku jsou vyžadovány následující vlastnosti.
-
PackageId, identifikátor balíčku, který musí být jedinečný v galerii, která je hostitelem balíčku. Pokud není zadána, je výchozí hodnotaAssemblyName. -
Version, konkrétní číslo verze ve formátu Major.Minor.Patch[-Suffix] kde -Suffix identifikuje předběžné verze. Pokud není zadána, výchozí hodnota je 1.0.0. - Název balíčku, který by se měl zobrazovat na hostiteli (například nuget.org)
-
Authors, informace o autorovi a vlastníkovi. Pokud není zadána, je výchozí hodnotaAssemblyName. -
Company, název vaší společnosti. Pokud není zadána, je výchozí hodnotaAssemblyName.
Pokud navíc balíte projekty ve stylu bez SDK, které používají PackageReference, je vyžadováno následující:
-
PackageOutputPath, výstupní složka balíčku vygenerovaná při volání balíčku.
V sadě Visual Studio můžete tyto hodnoty nastavit ve vlastnostech projektu (klikněte pravým tlačítkem na projekt v Průzkumníku řešení, zvolte Vlastnosti a vyberte kartu Balíček ). Tyto vlastnosti můžete také nastavit přímo v souborech projektu (.csproj).
<PropertyGroup>
<PackageId>ClassLibDotNetStandard</PackageId>
<Version>1.0.0</Version>
<Authors>your_name</Authors>
<Company>your_company</Company>
</PropertyGroup>
Důležité
Dejte balíčku jedinečný identifikátor pro nuget.org nebo jakýkoli zdroj balíčku, který používáte.
Následující příklad ukazuje jednoduchý kompletní projektový soubor s těmito vlastnostmi.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<PackageId>ClassLibDotNetStandard</PackageId>
<Version>1.0.0</Version>
<Authors>your_name</Authors>
<Company>your_company</Company>
</PropertyGroup>
</Project>
Můžete také nastavit volitelné vlastnosti, například Title, PackageDescriptiona PackageTags, jak je popsáno v cílech sady MSBuild, řízení prostředků závislostí a vlastnosti metadat NuGet.
Poznámka:
U balíčků vytvořených pro veřejnou spotřebu věnujte zvláštní pozornost vlastnosti PackageTags, protože značky pomáhají ostatním najít váš balíček a pochopit, co dělá.
Podrobnosti o deklarování závislostí a zadávání čísel verzí naleznete v tématu Odkazy na balíčky v souborech projektu a správa verzí balíčků. Prostředky je také možné zpřístupnit přímo v balíčku pomocí atributů <IncludeAssets> a <ExcludeAssets>. Další informace naleznete v tématu Řízení závislých prostředků.
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>
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.UsefulStuffmístoContoso-Utility-UsefulStuffneboContoso_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
.Samplek 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>s hodnotoucontentFiles. 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ů:
Konfigurace projektu pro balíček
Projekty ve stylu sady SDK nevyžadují žádnou další konfiguraci.
Projekty, které nejsou ve stylu sady SDK, potřebují buď nainstalovaný alespoň jeden balíček (prostřednictvím PackageReference, nikoli packages.config), nebo projekt musí explicitně instruovat NuGet, aby projekt zpracovával jako projekt PackageReference prostřednictvím RestoreProjectStyle vlastnosti.
Visual Studio 2022 a starší neobsahuje integrované balíčky, takže musíte také nainstalovat balíček NuGet.Build.Tasks.Pack. Při upgradu na Visual Studio 2026 nebo novější doporučujeme balíček odinstalovat, abyste mohli využívat nové funkce a opravy chyb.
Upravte soubor projektu.
Pokud chcete explicitně instruovat NuGet, aby s projektem zachází jako s PackageReference (projekt nemá nainstalované žádné balíčky), vyhledejte nebo přidejte příkaz
<PropertyGroup>, který neobsahuje žádnýConditionpříkaz, a přidejte:<PropertyGroup> <!-- other properties --> <RestoreProjectStyle>PackageReference</RestoreProjectStyle> <!-- more properties are allowed --> </PropertyGroup>Pokud používáte Visual Studio 2022 nebo starší, přidejte za
<PropertyGroup>element následující:<ItemGroup> <!-- ... --> <PackageReference Include="NuGet.Build.Tasks.Pack" Version="6.14.0" PrivateAssets="all" /> <!-- ... --> </ItemGroup>Otevřete příkazový řádek Pro vývojáře (do vyhledávacího pole zadejte Příkazový řádek pro vývojáře).
Obvykle spustíte příkazový řádek vývojáře pro Visual Studio z nabídky Start, protože je nakonfigurován se všemi potřebnými cestami pro MSBuild.
Přepněte do složky obsahující soubor projektu a zadáním následujícího příkazu obnovte balíček NuGet.Build.Tasks.Pack.
# Uses the project file in the current folder by default msbuild -t:restoreUjistěte se, že výstup MSBuild indikuje, že sestavení bylo úspěšně dokončeno.
Spuštění příkazu msbuild -t:pack
Pokud chcete sestavit balíček NuGet ( .nupkg soubor) z projektu, spusťte msbuild -t:pack příkaz, který také automaticky sestaví projekt:
Do příkazového řádku Vývojář pro Visual Studio zadejte následující příkaz:
# Uses the project file in the current folder by default
msbuild -t:pack
Výstup ukazuje cestu k .nupkg souboru.
Microsoft (R) Build Engine version 16.1.76+g14b0a930a7 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
Build started 8/5/2019 3:09:15 PM.
Project "C:\Users\username\source\repos\ClassLib_DotNetStandard\ClassLib_DotNetStandard.csproj" on node 1 (pack target(s)).
GenerateTargetFrameworkMonikerAttribute:
Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files.
CoreCompile:
...
CopyFilesToOutputDirectory:
Copying file from "C:\Users\username\source\repos\ClassLib_DotNetStandard\obj\Debug\netstandard2.0\ClassLib_DotNetStandard.dll" to "C:\Use
rs\username\source\repos\ClassLib_DotNetStandard\bin\Debug\netstandard2.0\ClassLib_DotNetStandard.dll".
ClassLib_DotNetStandard -> C:\Users\username\source\repos\ClassLib_DotNetStandard\bin\Debug\netstandard2.0\ClassLib_DotNetStandard.dll
Copying file from "C:\Users\username\source\repos\ClassLib_DotNetStandard\obj\Debug\netstandard2.0\ClassLib_DotNetStandard.pdb" to "C:\Use
rs\username\source\repos\ClassLib_DotNetStandard\bin\Debug\netstandard2.0\ClassLib_DotNetStandard.pdb".
GenerateNuspec:
Successfully created package 'C:\Users\username\source\repos\ClassLib_DotNetStandard\bin\Debug\AppLogger.1.0.0.nupkg'.
Done Building Project "C:\Users\username\source\repos\ClassLib_DotNetStandard\ClassLib_DotNetStandard.csproj" (pack target(s)).
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:00:01.21
Automatické generování balíčku při sestavení
Pokud chcete automaticky spustit msbuild -t:pack při sestavování nebo obnovování projektu, přidejte do souboru projektu následující řádek:<PropertyGroup>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
Při spuštění msbuild -t:pack na řešení se tím zabalí všechny projekty v řešení, které mají vlastnost <IsPackable> nastavenou na true a jsou zabalitelné.
Poznámka:
Při automatickém vygenerování balíčku se doba sestavení pro váš projekt zvýší.
Instalace testovacího balíčku
Před publikováním balíčku obvykle chcete otestovat proces instalace balíčku do projektu. Testy zajišťují, aby všechny soubory nutně skončily na jejich správných místech v projektu.
Instalace můžete testovat ručně v sadě Visual Studio nebo na příkazovém řádku pomocí běžných kroků instalace balíčku.
Důležité
Balíčky jsou neměnné. Pokud opravíte problém, změníte obsah balíčku a znovu ho zabalíte, při dalším testování budete stále používat starou verzi balíčku, dokud nesmažete globální složku balíčků. To je zvlášť důležité při testování balíčků softwaru, které nepoužívají jedinečné označení předběžné verze pro každé sestavení.
Další kroky
Jakmile vytvoříte balíček, což je .nupkg soubor, můžete ho publikovat do galerie podle svého výběru, jak je popsáno v tématu Publikování balíčku.
Můžete také chtít rozšířit možnosti balíčku nebo jinak podporovat další scénáře popsané v následujících tématech:
- Balíček NuGet a obnovení jako cíle nástroje MSBuild
- Verzování balíčků
- Podpora více cílových architektur
- Transformace zdrojových a konfiguračních souborů
- Lokalizace
- Předběžné verze
- Nastavit typ balíčku
- Props a cíle nástroje MSBuild
- Vytvoření balíčků s COM interop sestaveními
A konečně existují další typy balíčků, o které je potřeba vědět: