odkaz na souboru .nuspec.nuspec reference

A .nuspec je soubor manifestu XML, který obsahuje metadata balíčků.A .nuspec file is an XML manifest that contains package metadata. Tento manifest slouží k vytvoření balíčku a zadejte informace pro uživatele.This manifest is used both to build the package and to provide information to consumers. Manifest je vždy součástí balíčku.The manifest is always included in a package.

V tomto tématu:In this topic:

Obecný tvar a schématuGeneral form and schema

Aktuální nuspec.xsd soubor schématu najdete v úložiště NuGet GitHub.The current nuspec.xsd schema file can be found in the NuGet GitHub repository.

V tomto schématu .nuspec soubor má následující Obecné formuláře:Within this schema, a .nuspec file has the following general form:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <!-- Required elements-->
        <id></id>
        <version></version>
        <description></description>
        <authors></authors>

        <!-- Optional elements -->
        <!-- ... -->
    </metadata>
    <!-- Optional 'files' node -->
</package>

Vizuální znázornění schématu, otevřete soubor schématu v sadě Visual Studio v režimu návrhu a klikněte Průzkumníka schémat XML odkaz.For a clear visual representation of the schema, open the schema file in Visual Studio in Design mode and click on the XML Schema Explorer link. Alternativně otevřete soubor jako kód, klikněte v editoru pravým tlačítkem myši a vyberte zobrazení Průzkumníka schémat XML.Alternately, open the file as code, right-click in the editor, and select Show XML Schema Explorer. V obou případech, které získáte zobrazení jako na následující (v rozbaleném většinou):Either way you get a view like the one below (when mostly expanded):

Visual Studio Průzkumníka schémat s nuspec.xsd otevřít

Prvky požadovaná metadataRequired metadata elements

I když tyto prvky jsou minimální požadavky pro balíček, měli byste zvážit přidání volitelná metadata prvky zlepšit celkové prostředí mají vývojáři součástí vašeho balíčku.Although the following elements are the minimum requirements for a package, you should consider adding the optional metadata elements to improve the overall experience developers have with your package.

Tyto prvky musí být uvedena v rámci <metadata> elementu.These elements must appear within a <metadata> element.

idid

Identifikátor balíčku velká a malá písmena, která musí být jedinečný v rámci nuget.org nebo cokoli jiného balíčku se nachází v galerii.The case-insensitive package identifier, which must be unique across nuget.org or whatever gallery the package resides in. ID nemůže obsahovat mezery nebo znaky, které nejsou platné pro adresu URL a obvykle postupují podle pravidla oboru názvů .NET.IDs may not contain spaces or characters that are not valid for a URL, and generally follow .NET namespace rules. Zobrazit výběr balíčku jedinečný identifikátor pokyny.See Choosing a unique package identifier for guidance.

verzeversion

Verze balíčku, následující hlavníverze.podverze.oprava vzor.The version of the package, following the major.minor.patch pattern. Čísla verzí může obsahovat příponu předběžné verze, jak je popsáno v Správa verzí balíčků.Version numbers may include a pre-release suffix as described in Package versioning.

descriptiondescription

Dlouhý popis balíčku zobrazí v uživatelském rozhraní.A long description of the package for UI display.

Autořiauthors

Čárkou oddělený seznam autorů balíčků, odpovídající názvy profilů na nuget.org. Tyto jsou zobrazeny v galerii NuGet na nuget.org a slouží k křížový odkaz balíčky stejné autory.A comma-separated list of packages authors, matching the profile names on nuget.org. These are displayed in the NuGet Gallery on nuget.org and are used to cross-reference packages by the same authors.

Volitelná metadata elementyOptional metadata elements

Názevtitle

Lidské popisný název balíčku, obvykle používaných v uživatelském rozhraní na webech nuget.org a Správce balíčků v sadě Visual Studio.A human-friendly title of the package, typically used in UI displays as on nuget.org and the Package Manager in Visual Studio. Pokud není zadán, použije se ID balíčku.If not specified, the package ID is used.

Vlastníciowners

Čárkou oddělený seznam Tvůrce balíčku pomocí názvy profilů na nuget.org. To je často seznamu stejné jako v authorsa je ignorován při nahrávání balíčku do nuget.org. Zobrazit vlastníky Správa balíčků na nuget.org.A comma-separated list of the package creators using profile names on nuget.org. This is often the same list as in authors, and is ignored when uploading the package to nuget.org. See Managing package owners on nuget.org.

ProjectUrlprojectUrl

Adresa URL domovské stránky balíčku, často zobrazuje v uživatelském rozhraní nuget.org.A URL for the package's home page, often shown in UI displays as well as nuget.org.

LicenseUrllicenseUrl

Adresa URL licence balíčku, často zobrazuje v uživatelském rozhraní nuget.org.A URL for the package's license, often shown in UI displays as well as nuget.org.

IconUrliconUrl

Adresa URL pro bitovou kopii 64 x 64 s průhlednost pozadí použít jako ikona pro balíček zobrazená v uživatelském rozhraní.A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Ujistěte se, obsahuje tento element přímá adresa URL obrázku nikoli adresa URL webové stránky, který obsahuje bitovou kopii.Be sure this element contains the direct image URL and not the URL of a web page containing the image. Například pokud chcete použít některou image z Githubu, použijte soubor raw, jako je adresa URL https://github.com/<username>/<repository>/raw/<branch>/<logo.png>.For example, to use an image from GitHub, use the raw file URL like https://github.com/<username>/<repository>/raw/<branch>/<logo.png>.

RequireLicenseAcceptancerequireLicenseAcceptance

Logická hodnota určující, zda klient musí požádat spotřebitele o přijetí licence balíčku před instalací balíčku.A Boolean value specifying whether the client must prompt the consumer to accept the package license before installing the package.

DevelopmentDependencydevelopmentDependency

(2.8+) Logická hodnota určující, jestli tento balíček představuje označit jako vývoj – jen závislost, což zabrání balíčku nebudou zahrnuty v závislosti na dalších balíčků.(2.8+) A Boolean value specifying whether the package is be marked as a development-only-dependency, which prevents the package from being included as a dependency in other packages.

souhrnsummary

Krátký popis balíčku zobrazí v uživatelském rozhraní.A short description of the package for UI display. Pokud tento parametr vynechán, zkrácená verze description se používá.If omitted, a truncated version of description is used.

ReleaseNotesreleaseNotes

(1.5+) Popis změn provedených v této verzi balíčku, často používají v uživatelském rozhraní, jako aktualizace kartu z Visual Studio Správce balíčků namísto popisu balíčku.(1.5+) A description of the changes made in this release of the package, often used in UI like the Updates tab of the Visual Studio Package Manager in place of the package description.

(1.5+) Copyright podrobnosti balíčku.(1.5+) Copyright details for the package.

jazyklanguage

ID národního prostředí pro balíček.The locale ID for the package. Zobrazit vytvoření lokalizovaných balíčků.See Creating localized packages.

značkytags

Mezerami oddělený seznam značek a klíčových slov, které popisují balíček a podpora zjistitelnost balíčků prostřednictvím vyhledávání a filtrování.A space-delimited list of tags and keywords that describe the package and aid discoverability of packages through search and filtering.

možnost změnyserviceable

(3.3+) Pouze pro interní NuGet použít.(3.3+) For internal NuGet use only.

úložištěrepository

Metadata úložiště, skládající se z čtyři volitelné atributy: typ a url (4.0 +), a větev a potvrzení (4.6 +).Repository metadata, consisting of four optional attributes: type and url (4.0+), and branch and commit (4.6+). Tyto atributy umožňují namapovat .nupkg do úložiště, který sestavilo, má potenciál, chcete-li získat podrobné jako jednotlivé větev nebo potvrzení změn, které sestaven balíček.These attributes allow you to map the .nupkg to the repository that built it, with the potential to get as detailed as the individual branch or commit that built the package. To by měl být veřejně dostupnou adresu url, který lze vyvolat přímo pomocí softwaru pro řízení verzí.This should be a publicly available url that can be invoked directly by a version control software. Neměl by být stránku html jako ten je určený pro počítače.It should not be an html page as this is meant for the computer. Pro odkazování na stránku projektu, použijte projectUrl pole, místo toho.For linking to project page, use the projectUrl field, instead.

MinClientVersionminClientVersion

Určuje minimální verzi klienta NuGet, který můžete nainstalovat tento balíček, vynucuje nuget.exe a Správce balíčků sady Visual Studio.Specifies the minimum version of the NuGet client that can install this package, enforced by nuget.exe and the Visual Studio Package Manager. Používá se pokaždé, když se balíček závisí na konkrétních funkcí služby .nuspec souborů, které byly přidány v konkrétní verzi klienta NuGet.This is used whenever the package depends on specific features of the .nuspec file that were added in a particular version of the NuGet client. Třeba balíček pomocí developmentDependency atribut by měl určovat "2.8" pro minClientVersion.For example, a package using the developmentDependency attribute should specify "2.8" for minClientVersion. Obdobně balíček pomocí contentFiles – element (viz další části) by měl nastavit minClientVersion na "3.3".Similarly, a package using the contentFiles element (see the next section) should set minClientVersion to "3.3". Upozorňujeme také, že klienti NuGet před 2.5 nedokáže rozpoznat tento příznak jsou vždy odmítnout instalace balíčku bez ohledu na to, co minClientVersion obsahuje.Note also that because NuGet clients prior to 2.5 do not recognize this flag, they always refuse to install the package no matter what minClientVersion contains.

Elementy v kolekciCollection elements

PackageTypespackageTypes

(3.5 +) Kolekce nula nebo více <packageType> elementy typu balíčku Pokud než tradiční závislost balíčku.(3.5+) A collection of zero or more <packageType> elements specifying the type of the package if other than a traditional dependency package. Každý packageType má atributy název a verze.Each packageType has attributes of name and version. Zobrazit nastavení typ balíčku.See Setting a package type.

závislostidependencies

Kolekce nula nebo více <dependency> prvky určení závislostí pro balíček.A collection of zero or more <dependency> elements specifying the dependencies for the package. Každá závislost má atributy id, verze, zahrnují (3.x+), a vyloučit (3.x+).Each dependency has attributes of id, version, include (3.x+), and exclude (3.x+). Zobrazit závislosti níže.See Dependencies below.

frameworkAssembliesframeworkAssemblies

(1.2 +) Kolekce nula nebo více <frameworkAssembly> prvků identifikace odkazy na sestavení rozhraní .NET Framework, které vyžaduje tento balíček, které zajišťuje, že jsou přidány odkazy na projekty využívající balíček.(1.2+) A collection of zero or more <frameworkAssembly> elements identifying .NET Framework assembly references that this package requires, which ensures that references are added to projects consuming the package. Má každý frameworkAssembly assemblyName a targetFramework atributy.Each frameworkAssembly has assemblyName and targetFramework attributes. Zobrazit zadání framework sestavení odkazuje na globální mezipaměti níže.See Specifying framework assembly references GAC below. |

odkazyreferences

(1.5 +) Kolekce nula nebo více <reference> prvky názvy sestavení v balíčku lib složku, která jsou přidány jako odkazy na projekt.(1.5+) A collection of zero or more <reference> elements naming assemblies in the package's lib folder that are added as project references. Každý odkaz má souboru atribut.Each reference has a file attribute. <references> může také obsahovat <group> element s targetFramework atribut, pak obsahující <reference> elementy.<references> can also contain a <group> element with a targetFramework attribute, that then contains <reference> elements. Pokud tento parametr vynechán, všechny odkazy v lib jsou zahrnuty.If omitted, all references in lib are included. Zobrazit odkazy na sestavení explicitní určení níže.See Specifying explicit assembly references below.

contentFilescontentFiles

(3.3 +) Kolekce <files> prvky, které identifikují soubory obsahu, které mají být zahrnuty náročné projektu.(3.3+) A collection of <files> elements that identify content files to include in the consuming project. Tyto soubory jsou určené sadu atributů, které popisují, jak mají být použity v rámci systému projektů.These files are specified with a set of attributes that describe how they should be used within the project system. Zobrazit určující soubory, které chcete zahrnout do balíčku níže.See Specifying files to include in the package below.

soubory files

<package> Uzel může obsahovat <files> uzel na stejné úrovni k <metadata>a nebo <contentFiles> dítě <metadata>, určete, jaké soubory sestavení a obsah zahrnout do balíčku.The <package> node may contain a <files> node as a sibling to <metadata>, and a or <contentFiles> child under <metadata>, to specify which assembly and content files to include in the package. Zobrazit včetně souborů sestavení a včetně soubory obsahu dále v tomto tématu podrobnosti.See Including assembly files and Including content files later in this topic for details.

Nahrazování tokenůReplacement tokens

Při vytváření balíčku, nuget pack příkaz nahradí $oddělených tokenů v .nuspec souboru <metadata> uzlu s hodnotami, které pocházejí ze souboru projektu nebo pack příkazu -propertiespřepínat.When creating a package, the nuget pack command replaces $-delimited tokens in the .nuspec file's <metadata> node with values that come from either a project file or the pack command's -properties switch.

Na příkazovém řádku zadáte hodnoty tokenu s nuget pack -properties <name>=<value>;<name>=<value>.On the command line, you specify token values with nuget pack -properties <name>=<value>;<name>=<value>. Například můžete použít token jako $owners$ a $desc$ v .nuspec a zadejte hodnoty v následujícím způsobem balení čas:For example, you can use a token such as $owners$ and $desc$ in the .nuspec and provide the values at packing time as follows:

nuget pack MyProject.csproj -properties
    owners=janedoe,harikm,kimo,xiaop;desc="Awesome app logger utility"

Chcete-li hodnoty z projektu, zadat tokenů popsané v následující tabulce (AssemblyInfo odkazuje na soubor v Properties například AssemblyInfo.cs nebo AssemblyInfo.vb).To use values from a project, specify the tokens described in the table below (AssemblyInfo refers to the file in Properties such as AssemblyInfo.cs or AssemblyInfo.vb).

Pokud chcete použít tyto tokeny, spusťte nuget pack do souboru projektu namísto pouze .nuspec.To use these tokens, run nuget pack with the project file rather than just the .nuspec. Například, když pomocí následujícího příkazu $id$ a $version$ tokeny v .nuspec souboru jsou nahrazeny projektu AssemblyName a AssemblyVersion hodnoty:For example, when using the following command, the $id$ and $version$ tokens in a .nuspec file are replaced with the project's AssemblyName and AssemblyVersion values:

nuget pack MyProject.csproj

Obvykle, když máte projekt, vytvoříte .nuspec zpočátku pomocí nuget spec MyProject.csproj což automaticky zahrnuje některé z těchto standardních tokenů.Typically, when you have a project, you create the .nuspec initially using nuget spec MyProject.csproj which automatically includes some of these standard tokens. Nicméně, pokud projekt neobsahuje hodnoty pro požadované .nuspec prvky, pak nuget pack selže.However, if a project lacks values for required .nuspec elements, then nuget pack fails. Navíc pokud můžete změnit hodnoty projektu, je nutné znovu sestavit před vytvořením balíčku. To můžete udělat jednoduše pomocí příkazu pack build přepnout.Furthermore, if you change project values, be sure to rebuild before creating the package; this can be done conveniently with the pack command's build switch.

S výjimkou produktů $configuration$, jsou hodnoty v projektu použít preferenci pro libovolné přiřazen stejný token v příkazovém řádku.With the exception of $configuration$, values in the project are used in preference to any assigned to the same token on the command line.

TokenToken Hodnota zdrojeValue source HodnotaValue
$id$$id$ soubor projektuProject file AssemblyName (název) ze souboru projektuAssemblyName (title) from the project file
$version$$version$ AssemblyInfoAssemblyInfo AssemblyInformationalVersion, pokud jsou k dispozici, jinak AssemblyVersionAssemblyInformationalVersion if present, otherwise AssemblyVersion
$author$$author$ AssemblyInfoAssemblyInfo AssemblyCompanyAssemblyCompany
$title$$title$ AssemblyInfoAssemblyInfo AssemblyTitleAssemblyTitle
$description$$description$ AssemblyInfoAssemblyInfo AssemblyDescriptionAssemblyDescription
$copyright$$copyright$ AssemblyInfoAssemblyInfo AssemblyCopyrightAssemblyCopyright
$configuration$$configuration$ Sestavení knihovny DLLAssembly DLL Konfigurace použitý k vytvoření sestavení, jako výchozí se použije k ladění.Configuration used to build the assembly, defaulting to Debug. Všimněte si, že pokud chcete vytvořit balíček pomocí konfiguraci vydané verze, vždy používáte -properties Configuration=Release na příkazovém řádku.Note that to create a package using a Release configuration, you always use -properties Configuration=Release on the command line.

Tokeny je také možné přeložit cesty, jakmile zahrnete soubory sestavení a obsah souborů.Tokens can also be used to resolve paths when you include assembly files and content files. Tokeny mají stejné názvy jako vlastnosti nástroje MSBuild, což umožňuje vyberte soubory, které mají být zahrnuty v závislosti na aktuální konfiguraci sestavení.The tokens have the same names as the MSBuild properties, making it possible to select files to be included depending on the current build configuration. Například, pokud použijete následující klíčová slova v .nuspec souboru:For example, if you use the following tokens in the .nuspec file:

<files>
    <file src="bin\$configuration$\$id$.pdb" target="lib\net40" />
</files>

A vytvoření sestavení jehož AssemblyName je LoggingLibrary s Release konfigurace v nástroji MSBuild, výsledný vstupující .nuspec souborů v balíčku je následujícím způsobem:And you build an assembly whose AssemblyName is LoggingLibrary with the Release configuration in MSBuild, the resulting lines in the .nuspec file in the package is as follows:

<files>
    <file src="bin\Release\LoggingLibrary.pdb" target="lib\net40" />
</files>

Dependencies – elementDependencies element

<dependencies> Element v rámci <metadata> obsahuje libovolný počet <dependency> prvky, které určují další balíčky, na kterých závisí balíček nejvyšší úrovně.The <dependencies> element within <metadata> contains any number of <dependency> elements that identify other packages upon which the top-level package depends. Atributy pro každý <dependency> jsou následující:The attributes for each <dependency> are as follows:

AtributAttribute PopisDescription
id (Povinné) Ukazuje, na stránce balíček pro ID balíčku závislosti, jako je například "EntityFramework" a "NUnit", což je název balíčku nuget.org.(Required) The package ID of the dependency, such as "EntityFramework" and "NUnit", which is the name of the package nuget.org shows on a package page.
version (Povinné) Rozsah verzí přijatelné jako závislost.(Required) The range of versions acceptable as a dependency. Zobrazit Správa verzí balíčků přesnou syntaxi.See Package versioning for exact syntax.
includeinclude Čárkami oddělený seznam zahrnutí a vyloučení značek (viz níže) označující závislosti, které mají být zahrnuty do koncového balíčku.A comma-delimited list of include/exclude tags (see below) indicating of the dependency to include in the final package. Výchozí hodnota je all.The default value is all.
excludeexclude Čárkami oddělený seznam zahrnutí a vyloučení značek (viz níže) označující závislosti pro vyloučení ve finálním balíčku.A comma-delimited list of include/exclude tags (see below) indicating of the dependency to exclude in the final package. Výchozí hodnota je build,analyzers může být přepsání.The default value is build,analyzers which can be over-written. Ale content/ ContentFiles nevylučují se také implicitně ve finálním balíčku, který nelze přepsání.But content/ ContentFiles are also implicitly excluded in the final package which can't be over-written. Značky s exclude přednost zadaným include.Tags specified with exclude take precedence over those specified with include. Například include="runtime, compile" exclude="compile" je stejný jako include="runtime".For example, include="runtime, compile" exclude="compile" is the same as include="runtime".
Zahrnutí a vyloučení značekInclude/Exclude tag Ovlivněné složky cíleAffected folders of the target
contentFilescontentFiles ObsahContent
modul runtimeruntime Modul runtime, prostředky a FrameworkAssembliesRuntime, Resources, and FrameworkAssemblies
Kompilacecompile liblib
sestaveníbuild sestavení (cíle a vlastnosti nástroje MSBuild)build (MSBuild props and targets)
nativnínative nativnínative
žádnánone Žádné složkyNo folders
všechnyall Všechny složkyAll folders

Například následující řádky signalizovat závislosti na PackageA verze 1.1.0 nebo vyšší, a PackageB verzi 1.x.For example, the following lines indicate dependencies on PackageA version 1.1.0 or higher, and PackageB version 1.x.

<dependencies>
    <dependency id="PackageA" version="1.1.0" />
    <dependency id="PackageB" version="[1,2)" />
</dependencies>

Následující řádky označují závislostí na stejné balíčky, ale zadané k vložení contentFiles a build složky PackageA a všechno, co ale native a compile složky PackageB"The following lines indicate dependencies on the same packages, but specify to include the contentFiles and build folders of PackageA and everything but the native and compile folders of PackageB"

<dependencies>
    <dependency id="PackageA" version="1.1.0" include="contentFiles, build" />
    <dependency id="PackageB" version="[1,2)" exclude="native, compile" />
</dependencies>

Poznámka: Při vytváření .nuspec z projektu pomocí nuget spec, závislosti, které existují v tomto projektu jsou automaticky obsažené ve výsledné .nuspec souboru.Note: When creating a .nuspec from a project using nuget spec, dependencies that exist in that project are automatically included in the resulting .nuspec file.

Závislostí skupinDependency groups

Verze 2.0 +Version 2.0+

Jako alternativu k jednomu seznamu bez stromové struktury, se dá nastavit závislosti podle profilu framework cílový projekt pomocí <group> elementů v rámci <dependencies>.As an alternative to a single flat list, dependencies can be specified according to the framework profile of the target project using <group> elements within <dependencies>.

Každá skupina obsahuje atribut s názvem targetFramework a obsahuje nulu nebo více <dependency> elementy.Each group has an attribute named targetFramework and contains zero or more <dependency> elements. Tyto závislosti jsou nainstalovány společně, když Cílová architektura, která je kompatibilní s profilem rozhraní framework projektu.Those dependencies are installed together when the target framework is compatible with the project's framework profile.

<group> Element bez targetFramework atribut se používá jako výchozí nebo záložní seznam závislostí.The <group> element without a targetFramework attribute is used as the default or fallback list of dependencies. Zobrazit platforem pro identifikátory přesné framework.See Target frameworks for the exact framework identifiers.

Důležité

Formát skupiny nelze smíšeného s nestrukturovaného seznamu.The group format cannot be intermixed with a flat list.

Následující příklad ukazuje různé varianty <group> element:The following example shows different variations of the <group> element:

<dependencies>
    <group>
        <dependency id="RouteMagic" version="1.1.0" />
    </group>

    <group targetFramework="net40">
        <dependency id="jQuery" />
        <dependency id="WebActivator" />
    </group>

    <group targetFramework="sl30">
    </group>
</dependencies>

Odkazy na explicitní sestaveníExplicit assembly references

<references> Prvek explicitně určuje sestavení, které by měly odkazovat na cílový projekt, při použití balíčku.The <references> element explicitly specifies the assemblies that the target project should reference when using the package. Pokud tento prvek je k dispozici, NuGet přidat odkazy pouze na uvedené sestavení; nepřidá odkazy pro jiná sestavení v balíčku lib složky.When this element is present, NuGet add references to only the listed assemblies; it does not add references for any other assemblies in the package's lib folder.

Například následující <references> element dává pokyn NuGet pro přidání odkazů na pouze xunit.dll a xunit.extensions.dll i v případě, že existují další sestavení v balíčku:For example, the following <references> element instructs NuGet to add references to only xunit.dll and xunit.extensions.dll even if there are additional assemblies in the package:

<references>
    <reference file="xunit.dll" />
    <reference file="xunit.extensions.dll" />
</references>

Explicitní odkazy se obvykle používají pro pouze na sestavení doby návrhu.Explicit references are typically used for design-time only assemblies. Při použití kontrakty kódu, například sestavení kontraktu musí být vedle sestavení modulu runtime, které se rozšiřují, aby Visual Studio můžete najít, ale kontrakt sestavení nemusí být odkazuje projekt nebo zkopírovat do projektu bin složky.When using Code Contracts, for example, contract assemblies need to be next to the runtime assemblies that they augment so that Visual Studio can find them, but the contract assemblies need not be referenced by the project or copied into the project's bin folder.

Podobně je možné explicitní odkazy pro rozhraní pro testování částí, jako jsou XUnit, která potřebuje jeho nástroje pro sestavení vedle sestavení modulu runtime, ale nemá potřebovat, který je zahrnutý jako odkazy na projekt.Similarly, explicit references can be used for unit test frameworks, such as XUnit, which needs its tools assemblies located next to the runtime assemblies, but does not need them included as project references.

Referenční skupinyReference groups

Jako alternativu k jednomu plochého seznamu lze upravit odkazy podle profilu framework cílový projekt pomocí <group> elementů v rámci <references>.As an alternative to a single flat list, references can be specified according to the framework profile of the target project using <group> elements within <references>.

Každá skupina obsahuje atribut s názvem targetFramework a obsahuje nulu nebo více <reference> elementy.Each group has an attribute named targetFramework and contains zero or more <reference> elements. Tyto odkazy jsou přidány do projektu, když Cílová architektura, která je kompatibilní s profilem rozhraní framework projektu.Those references are added to a project when the target framework is compatible with the project's framework profile.

<group> Element bez targetFramework atribut se používá jako výchozí nebo záložní seznamu odkazů.The <group> element without a targetFramework attribute is used as the default or fallback list of references. Zobrazit platforem pro identifikátory přesné framework.See Target frameworks for the exact framework identifiers.

Důležité

Formát skupiny nelze smíšeného s nestrukturovaného seznamu.The group format cannot be intermixed with a flat list.

Následující příklad ukazuje různé varianty <group> element:The following example shows different variations of the <group> element:

<references>
    <group>
        <reference file="a.dll" />
    </group>

    <group targetFramework="net45">
        <reference file="b45.dll" />
    </group>

    <group targetFramework="netcore45">
        <reference file="bcore45.dll" />
    </group>
</references>

Odkazy na sestavení rozhraníFramework assembly references

Sestavení rozhraní jsou ty, které jsou součástí rozhraní .NET framework a by už měla být v globální mezipaměti sestavení (GAC) pro libovolný daný počítač.Framework assemblies are those that are part of the .NET framework and should already be in the global assembly cache (GAC) for any given machine. Určením těchto sestavení v rámci <frameworkAssemblies> elementu balíčku můžete zajistit, že požadované odkazy jsou přidány do projektu, v případě, že projekt již nemá tyto odkazy.By identifying those assemblies within the <frameworkAssemblies> element, a package can ensure that required references are added to a project in the event that the project doesn't have such references already. Takové sestavení, samozřejmě, nejsou obsažené v balíčku přímo.Such assemblies, of course, are not included in a package directly.

<frameworkAssemblies> Prvek obsahuje nula nebo více <frameworkAssembly> prvky, z nichž každý určuje následující atributy:The <frameworkAssemblies> element contains zero or more <frameworkAssembly> elements, each of which specifies the following attributes:

AtributAttribute PopisDescription
assemblyNameassemblyName (Povinné) Plně kvalifikovaný název.(Required) The fully qualified assembly name.
targetFrameworktargetFramework (Volitelné) Určuje cílovou architekturu, pro který platí tento odkaz.(Optional) Specifies the target framework to which this reference applies. Pokud tento parametr vynechán, označuje, že odkaz použije pro všechny platformy.If omitted, indicates that the reference applies to all frameworks. Zobrazit platforem pro identifikátory přesné framework.See Target frameworks for the exact framework identifiers.

Následující příklad ukazuje odkaz na System.Net pro všechny cílové platformy a odkaz na System.ServiceModel pro pouze rozhraní .NET Framework 4.0:The following example shows a reference to System.Net for all target frameworks, and a reference to System.ServiceModel for .NET Framework 4.0 only:

<frameworkAssemblies>
    <frameworkAssembly assemblyName="System.Net"  />

    <frameworkAssembly assemblyName="System.ServiceModel" targetFramework="net40" />
</frameworkAssemblies>

Včetně souborů sestaveníIncluding assembly files

Pokud budete postupovat podle konvence je popsáno v vytvoření balíčku, není potřeba explicitně zadat seznam souborů v .nuspec souboru.If you follow the conventions described in Creating a Package, you do not have to explicitly specify a list of files in the .nuspec file. nuget pack Příkaz automaticky převezme potřebné soubory.The nuget pack command automatically picks up the necessary files.

Důležité

Při instalaci do projektu balíček NuGet automaticky přidá odkazy na sestavení knihovny DLL balíčku, s výjimkou ty, které jsou pojmenovány .resources.dll vzhledem k tomu, že se budou považovat za lokalizovaná satelitní sestavení.When a package is installed into a project, NuGet automatically adds assembly references to the package's DLLs, excluding those that are named .resources.dll because they are assumed to be localized satellite assemblies. Z tohoto důvodu se vyhněte se použití .resources.dll pro soubory, které jinak obsahují základní balíček kódu.For this reason, avoid using .resources.dll for files that otherwise contain essential package code.

Toto automatické chování obejít a explicitně kontrolovat soubory, které jsou obsažené v balíčku, umístěte <files> jako podřízený element <package> (a na stejné úrovni <metadata>), identifikuje každý soubor se samostatným <file> element.To bypass this automatic behavior and explicitly control which files are included in a package, place a <files> element as a child of <package> (and a sibling of <metadata>), identifying each file with a separate <file> element. Příklad:For example:

<files>
    <file src="bin\Debug\*.dll" target="lib" />
    <file src="bin\Debug\*.pdb" target="lib" />
    <file src="tools\**\*.*" exclude="**\*.log" />
</files>

Nuget 2.x a dřívějších verzí a projekty pomocí packages.config, <files> element slouží také k neměnné obsahu soubory k zahrnutí při instalaci balíčku.With NuGet 2.x and earlier, and projects using packages.config, the <files> element is also used to include immutable content files when a package is installed. S NuGet 3.3 + i na PackageReference <contentFiles> elementu je použita.With NuGet 3.3+ and projects PackageReference, the <contentFiles> element is used instead. Zobrazit včetně soubory obsahu níže podrobnosti.See Including content files below for details.

Atributy souboruFile element attributes

Každý <file> prvek určuje následující atributy:Each <file> element specifies the following attributes:

AtributAttribute PopisDescription
srcsrc Umístění souboru nebo souborů zahrnout v souladu s vyloučení určené exclude atribut.The location of the file or files to include, subject to exclusions specified by the exclude attribute. Cesta je vzhledem k .nuspec souboru není určena absolutní cestu.The path is relative to the .nuspec file unless an absolute path is specified. Zástupný znak * je povolený nebo double zástupné ** znamená rekurzivní hledání složky.The wildcard character * is allowed, and the double wildcard ** implies a recursive folder search.
Cíltarget Relativní cesta ke složce v rámci balíčku, kde jsou umístěny zdrojové soubory, které musí začínat lib, content, build, nebo tools.The relative path to the folder within the package where the source files are placed, which must begin with lib, content, build, or tools. Zobrazit vytváření souboru .nuspec z pracovního adresáře podle úmluvy.See Creating a .nuspec from a convention-based working directory.
Vyloučeníexclude Středníkem oddělený seznam soubory nebo vzory souborů, které chcete vyloučit z src umístění.A semicolon-delimited list of files or file patterns to exclude from the src location. Zástupný znak * je povolený nebo double zástupné ** znamená rekurzivní hledání složky.The wildcard character * is allowed, and the double wildcard ** implies a recursive folder search.

PříkladyExamples

Jediné sestaveníSingle assembly

Source file:
    library.dll

.nuspec entry:
    <file src="library.dll" target="lib" />

Packaged result:
    lib\library.dll

Jediné sestavení specifická pro rozhraní .NET frameworkSingle assembly specific to a target framework

Source file:
    library.dll

.nuspec entry:
    <file src="assemblies\net40\library.dll" target="lib\net40" />

Packaged result:
    lib\net40\library.dll

Sada knihovny DLL pomocí zástupného znakuSet of DLLs using a wildcard

Source files:
    bin\release\libraryA.dll
    bin\release\libraryB.dll

.nuspec entry:
    <file src="bin\release\*.dll" target="lib" />

Packaged result:
    lib\libraryA.dll
    lib\libraryB.dll

Knihovny DLL pro různá rozhraníDLLs for different frameworks

Source files:
    lib\net40\library.dll
    lib\net20\library.dll

.nuspec entry (using ** recursive search):
    <file src="lib\**" target="lib" />

Packaged result:
    lib\net40\library.dll
    lib\net20\library.dll

Vyloučení souborůExcluding files

Source files:
    \tools\fileA.bak
    \tools\fileB.bak
    \tools\fileA.log
    \tools\build\fileB.log

.nuspec entries:
    <file src="tools\*.*" target="tools" exclude="tools\*.bak" />
    <file src="tools\**\*.*" target="tools" exclude="**\*.log" />

Package result:
    (no files)

Včetně souborů obsahuIncluding content files

Soubory obsahu jsou neměnné soubory, které je potřeba zahrnout do projektu balíček.Content files are immutable files that a package needs to include in a project. Je neměnný, nejsou určeny k používání projektu změnit.Being immutable, they are not intended to be modified by the consuming project. Příklad obsahu souborů patří:Example content files include:

  • Bitové kopie, které jsou vloženy jako prostředkyImages that are embedded as resources
  • Zdrojové soubory, které jsou již kompilovánSource files that are already compiled
  • Skripty, které musí být součástí výstupu sestavení projektuScripts that need to be included with the build output of the project
  • Konfigurační soubory pro balíček, který mají být zahrnuti do projektu, ale není třeba žádné změny specifické pro projektConfiguration files for the package that need to be included in the project but don't need any project-specific changes

Obsahu souborů jsou součástí balíčku pomocí <files> elementu, určení content složky target atribut.Content files are included in a package using the <files> element, specifying the content folder in the target attribute. Ale tyto soubory jsou ignorovány při instalaci balíčku v projektu pomocí PackageReference, který používá místo toho <contentFiles> elementu.However, such files are ignored when the package is installed in a project using PackageReference, which instead uses the <contentFiles> element.

Balíček pro maximální kompatibility s využívání projektů v ideálním případě Určuje soubory obsahu v obou elementech.For maximum compatibility with consuming projects, a package ideally specifies the content files in both elements.

Pomocí elementu souborů pro soubory obsahuUsing the files element for content files

Pro soubory obsahu, stačí použít stejný formát jako soubory sestavení, ale zadat content jako základní složka v target atributu, jak je znázorněno v následujícím příkladu.For content files, simply use the same format as for assembly files, but specify content as the base folder in the target attribute as shown in the following examples.

Soubory základního obsahuBasic content files

Source files:
    css\mobile\style1.css
    css\mobile\style2.css

.nuspec entry:
    <file src="css\mobile\*.css" target="content\css\mobile" />

Packaged result:
    content\css\mobile\style1.css
    content\css\mobile\style2.css

Soubory obsahu s adresářovou strukturuContent files with directory structure

Source files:
    css\mobile\style.css
    css\mobile\wp7\style.css
    css\browser\style.css

.nuspec entry:
    <file src="css\**\*.css" target="content\css" />

Packaged result:
    content\css\mobile\style.css
    content\css\mobile\wp7\style.css
    content\css\browser\style.css

Soubor s obsahem specifické pro cílové prostředíContent file specific to a target framework

Source file:
    css\cool\style.css

.nuspec entry
    <file src="css\cool\style.css" target="Content" />

Packaged result:
    content\style.css

Zkopírovat do složky s tečkou v názvu souboru obsahuContent file copied to a folder with dot in name

V takovém případě se zobrazí NuGet, který rozšíření v target se neshoduje s příponou v src a proto zpracovává tuto část názvu v target jako složka:In this case, NuGet sees that the extension in target does not match the extension in src and thus treats that part of the name in target as a folder:

Source file:
    images\picture.png

.nuspec entry:
    <file src="images\picture.png" target="Content\images\package.icons" />

Packaged result:
    content\images\package.icons\picture.png

Soubory obsahu bez příponyContent files without extensions

Chcete-li zahrnout soubory bez přípony, použijte * nebo ** zástupné znaky:To include files without an extension, use the * or ** wildcards:

Source file:
    flags\installed

.nuspec entry:
    <file src="flags\**" target="flags" />

Packaged result:
    flags\installed

Soubory obsahu se hloubkové cesty a hloubkové cílemContent files with deep path and deep target

V takovém případě protože přípony zdrojovou a cílovou odpovídají, NuGet předpokládá, že cíl je název souboru a nikoliv složka:In this case, because the file extensions of the source and target match, NuGet assumes that the target is a file name and not a folder:

Source file:
    css\cool\style.css

.nuspec entry:
    <file src="css\cool\style.css" target="Content\css\cool" />
    or:
    <file src="css\cool\style.css" target="Content\css\cool\style.css" />

Packaged result:
    content\css\cool\style.css

Přejmenování souboru obsahu v balíčkuRenaming a content file in the package

Source file:
    ie\css\style.css

.nuspec entry:
    <file src="ie\css\style.css" target="Content\css\ie.css" />

Packaged result:
    content\css\ie.css

Vyloučení souborůExcluding files

Source file:
    docs\*.txt (multiple files)

.nuspec entry:
    <file src="docs\*.txt" target="content\docs" exclude="docs\admin.txt" />
    or
    <file src="*.txt" target="content\docs" exclude="admin.txt;log.txt" />

Packaged result:
    All .txt files from docs except admin.txt (first example)
    All .txt files from docs except admin.txt and log.txt (second example)

Pomocí elementu contentFiles pro soubory obsahuUsing the contentFiles element for content files

NuGet 4.0 + s PackageReferenceNuGet 4.0+ with PackageReference

Ve výchozím nastavení, umístí balíček obsahu contentFiles složky (viz níže) a nuget pack zahrnuty všechny soubory ve složce pomocí výchozí atributy.By default, a package places content in a contentFiles folder (see below) and nuget pack included all files in that folder using default attributes. V tomto případě není nutné zahrnout contentFiles uzlu .nuspec vůbec.In this case it's not necessary to include a contentFiles node in the .nuspec at all.

K řízení souborů, které jsou zahrnuty <contentFiles> prvek určuje je kolekce <files> mezi prvky, které identifikují přesné soubory patří.To control which files are included, the <contentFiles> element specifies is a collection of <files> elements that identify the exact files include.

Tyto soubory jsou určené sadu atributů, které popisují, jak mají být použity v rámci systému projektů:These files are specified with a set of attributes that describe how they should be used within the project system:

AtributAttribute PopisDescription
Zahrnoutinclude (Povinné) Umístění souboru nebo souborů zahrnout v souladu s vyloučení určené exclude atribut.(Required) The location of the file or files to include, subject to exclusions specified by the exclude attribute. Cesta je vzhledem k .nuspec souboru není určena absolutní cestu.The path is relative to the .nuspec file unless an absolute path is specified. Zástupný znak * je povolený nebo double zástupné ** znamená rekurzivní hledání složky.The wildcard character * is allowed, and the double wildcard ** implies a recursive folder search.
Vyloučeníexclude Středníkem oddělený seznam soubory nebo vzory souborů, které chcete vyloučit z src umístění.A semicolon-delimited list of files or file patterns to exclude from the src location. Zástupný znak * je povolený nebo double zástupné ** znamená rekurzivní hledání složky.The wildcard character * is allowed, and the double wildcard ** implies a recursive folder search.
buildActionbuildAction Akce sestavení zařadit do obsahu položky nástroje MSBuild, jako například Content, None, Embedded Resource, Compileatd. Výchozí hodnota je Compile.The build action to assign to the content item for MSBuild, such as Content, None, Embedded Resource, Compile, etc. The default is Compile.
copyToOutputcopyToOutput Logická hodnota označující, jestli se má kopírovat položky obsahu pro sestavení (nebo publikovat) výstupní složka.A Boolean indicating whether to copy content items to the build (or publish) output folder. Výchozí hodnota je false.The default is false.
Sloučitflatten Logická hodnota označující, zda se můžete kopírovat položky obsahu na jedinou složku ve výstupu sestavení (pravda), nebo zachovat strukturu složek v balíčku (false).A Boolean indicating whether to copy content items to a single folder in the build output (true), or to preserve the folder structure in the package (false). Tento příznak funguje pouze v případě copyToOutput příznak je nastaven na hodnotu true.This flag only works when copyToOutput flag is set to true. Výchozí hodnota je false.The default is false.

Při instalaci balíčku NuGet platí podřízených elementů <contentFiles> shora dolů.When installing a package, NuGet applies the child elements of <contentFiles> from top to bottom. Pokud se shodují na stejný soubor několik záznamů se použijí všechny položky.If multiple entries match the same file then all entries are applied. Položky navrchu přepíše nižší položky dojde ke konfliktu pro stejný atribut.The top-most entry overrides the lower entries if there is a conflict for the same attribute.

Struktura složky balíčkuPackage folder structure

Projekt balíčku strukturovat obsahu pomocí následujícímu vzoru:The package project should structure content using the following pattern:

/contentFiles/{codeLanguage}/{TxM}/{any?}
  • codeLanguages může být cs, vb, fs, any, nebo malým ekvivalentem znaku danou $(ProjectLanguage)codeLanguages may be cs, vb, fs, any, or the lowercase equivalent of a given $(ProjectLanguage)
  • TxM je všechny moniker právní cílového rozhraní, která podporuje NuGet (viz platforem).TxM is any legal target framework moniker that NuGet supports (see Target frameworks).
  • Složky libovolné struktury složek může připojen na konec této syntaxe.Any folder structure may be appended to the end of this syntax.

Příklad:For example:

Language- and framework-agnostic:
    /contentFiles/any/any/config.xml

net45 content for all languages
    /contentFiles/any/net45/config.xml

C#-specific content for net45 and up
    /contentFiles/cs/net45/sample.cs

Můžete použít prázdné složky . chcete vyjádřit výslovný nesouhlas poskytnutí obsahu pro určité kombinace jazyka a TxM, například:Empty folders can use . to opt out of providing content for certain combinations of language and TxM, for example:

/contentFiles/vb/any/code.vb
/contentFiles/cs/any/.

Vzorový oddíl contentFilesExample contentFiles section

<contentFiles>
    <!-- Embed image resources -->
    <files include="any/any/images/dnf.png" buildAction="EmbeddedResource" />
    <files include="any/any/images/ui.png" buildAction="EmbeddedResource" />

    <!-- Embed all image resources under contentFiles/cs/ -->
    <files include="cs/**/*.png" buildAction="EmbeddedResource" />

    <!-- Copy config.xml to the root of the output folder -->
    <files include="cs/uap/config/config.xml" buildAction="None" copyToOutput="true" flatten="true" />

    <!-- Copy run.cmd to the output folder and keep the directory structure -->
    <files include="cs/commands/run.cmd" buildAction="None" copyToOutput="true" flatten="false" />

    <!-- Include everything in the scripts folder except exe files -->
    <files include="cs/net45/scripts/*" exclude="**/*.exe"  buildAction="None" copyToOutput="true" />
</contentFiles>

Příklad souboru nuspec souboryExample nuspec files

Jednoduchý .nuspec , která neurčuje závislosti nebo souborůA simple .nuspec that does not specify dependencies or files

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <id>sample</id>
        <version>1.2.3</version>
        <authors>Kim Abercrombie, Franck Halmaert</authors>
        <description>Sample exists only to show a sample .nuspec file.</description>
        <language>en-US</language>
        <projectUrl>http://xunit.codeplex.com/</projectUrl>
        <licenseUrl>http://xunit.codeplex.com/license</licenseUrl>
    </metadata>
</package>

A .nuspec se závislostmiA .nuspec with dependencies

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <id>sample</id>
        <version>1.0.0</version>
        <authors>Microsoft</authors>
        <dependencies>
            <dependency id="another-package" version="3.0.0" />
            <dependency id="yet-another-package" version="1.0.0" />
        </dependencies>
    </metadata>
</package>

A .nuspec se souboryA .nuspec with files

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <id>routedebugger</id>
        <version>1.0.0</version>
        <authors>Jay Hamlin</authors>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>Route Debugger is a little utility I wrote...</description>
    </metadata>
    <files>
        <file src="bin\Debug\*.dll" target="lib" />
    </files>
</package>

A .nuspec se sestaveními rozhraní frameworkA .nuspec with framework assemblies

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <id>PackageWithGacReferences</id>
        <version>1.0</version>
        <authors>Author here</authors>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>
            A package that has framework assemblyReferences depending
            on the target framework.
        </description>
        <frameworkAssemblies>
            <frameworkAssembly assemblyName="System.Web" targetFramework="net40" />
            <frameworkAssembly assemblyName="System.Net" targetFramework="net40-client, net40" />
            <frameworkAssembly assemblyName="Microsoft.Devices.Sensors" targetFramework="sl4-wp" />
            <frameworkAssembly assemblyName="System.Json" targetFramework="sl3" />
        </frameworkAssemblies>
    </metadata>
</package>

V tomto příkladu tímto se nainstalují pro konkrétní projekt cílí:In this example, the following are installed for specific project targets:

  • .NET4 -> System.Web, System.Net.NET4 -> System.Web, System.Net
  • . NET4 -> Client Profile System.Net.NET4 Client Profile -> System.Net
  • -> Silverlight 3 System.JsonSilverlight 3 -> System.Json
  • Silverlight 4 -> System.Windows.Controls.DomainServicesSilverlight 4 -> System.Windows.Controls.DomainServices
  • WindowsPhone -> Microsoft.Devices.SensorsWindowsPhone -> Microsoft.Devices.Sensors