NUSPEC-Referenz.nuspec reference

Bei einer .nuspec-Datei handelt es sich um eine XML-Manifestdatei, die Paketmetadaten enthält.A .nuspec file is an XML manifest that contains package metadata. Diese Manifestdatei wird sowohl für die Erstellung des Pakets als auch zur Bereitstellung von Informationen für die Consumer verwendet.This manifest is used both to build the package and to provide information to consumers. Manifestdateien sind in allen Paketen enthalten.The manifest is always included in a package.

In diesem Thema:In this topic:

Allgemeine Form und SchemaGeneral form and schema

Die aktuelle nuspec.xsd-Schemadatei finden Sie im NuGet-GitHub-Repository.The current nuspec.xsd schema file can be found in the NuGet GitHub repository.

Für dieses Schema gilt die im Folgenden dargestellte allgemeine Form für die .nuspec-Datei: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>

Um eine übersichtliche Darstellung des Schemas anzuzeigen, öffnen Sie die Schemadatei im Entwurfsmodus in Visual Studio und klicken dann auf den Link XML-Schema-Explorer.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. Alternativ können Sie die Datei auch als Code öffnen, mit der rechten Maustaste in den Editor klicken und Show XML Schema Explorer (XML-Schema-Explorer anzeigen) auswählen.Alternately, open the file as code, right-click in the editor, and select Show XML Schema Explorer. In beiden Fällen wird eine Ansicht zurückgegeben, die der in der folgenden Abbildung gezeigten ähnlich ist (bei erweiterter Darstellung):Either way you get a view like the one below (when mostly expanded):

Visual Studio-Schema-Explorer mit geöffneter „nuspec.xsd“-Datei

Erforderliche MetadatenelementeRequired metadata elements

Obwohl es sich bei den folgenden Elementen um die Mindestanforderungen für ein Paket handelt, sollten Sie in Erwägung ziehen, die optionalen Metadatenelemente hinzuzufügen, damit Entwicklern die Arbeit mit Ihren Paketen erleichtert wird.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.

Die folgenden Elemente müssen in einem <metadata>-Element vorhanden sein.These elements must appear within a <metadata> element.

idid

Paketbezeichner, der auf nuget.org oder im für das Paket verwendeten Katalog eindeutig sein muss. Die Groß-/Kleinschreibung wird nicht berücksichtigt.The case-insensitive package identifier, which must be unique across nuget.org or whatever gallery the package resides in. IDs dürfen keine Leerzeichen oder in URLs unzulässige Zeichen enthalten. Im Wesentlichen müssen sie den Regeln für .NET-Namespaces entsprechen.IDs may not contain spaces or characters that are not valid for a URL, and generally follow .NET namespace rules. Informationen finden Sie unter Auswählen eines eindeutigen Paketbezeichners und Festlegen der Versionsnummer.See Choosing a unique package identifier for guidance.

versionversion

Die Version des Pakets. Das Format lautet Hauptversion.Nebenversion.Patch.The version of the package, following the major.minor.patch pattern. Versionsnummern enthalten möglicherweise, wie unter Version Ranges and Wildcards (Versionsbereiche und Platzhalter) beschrieben, ein Suffix der Vorabversion.Version numbers may include a pre-release suffix as described in Package versioning.

descriptiondescription

Eine ausführliche Beschreibung des Pakets zur Anzeige auf der Benutzeroberfläche.A long description of the package for UI display.

authorsauthors

Eine durch Kommas getrennte Liste der Paketautoren entsprechend den Profilnamen unter nuget.org. Diese werden im NuGet-Katalog auf nuget.org angezeigt und verwendet, um auf Pakete derselben Autoren zu verweisen.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.

Optionale MetadatenelementeOptional metadata elements

titletitle

Ein benutzerfreundlicher Titel des Pakets, der gewöhnlich auf Benutzeroberflächen wie auf nuget.org oder im Paket-Manager in Visual Studio angezeigt wird.A human-friendly title of the package, typically used in UI displays as on nuget.org and the Package Manager in Visual Studio. Sofern nicht angegeben, wird die Paket-ID verwendet.If not specified, the package ID is used.

ownersowners

Eine durch Kommas getrennte Liste der Paketersteller mit den auf nuget.org verwendeten Profilnamen. Dabei handelt es sich häufig um dieselbe Liste wie in authors. Sie wird beim Hochladen der Pakete auf nuget.org ignoriert. Informationen hierzu finden Sie unter Verwalten von Paketbesitzern auf 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

URL der Homepage des Pakets, wird häufig auf Benutzeroberflächen und auf nuget.org angezeigt.A URL for the package's home page, often shown in UI displays as well as nuget.org.

licenseUrllicenseUrl

Wichtig

"licenseUrl" ist veraltet.licenseUrl is being deprecated. Verwenden Sie stattdessen die Lizenz.Use license instead.

URL der Paketlizenz, wird häufig auf Benutzeroberflächen und auf nuget.org angezeigt.A URL for the package's license, often shown in UI displays as well as nuget.org.

Lizenzlicense

Ein SPDX Lizenz Ausdruck oder der Pfad zu einer Lizenzdatei innerhalb des Pakets, das häufig angezeigt, in der Benutzeroberfläche auch als nuget.org angezeigt werden soll. Wenn Sie das Paket unter einer gemeinsamen Lizenz z. B. BSD-2-Klausel oder MIT lizenzieren, verwenden Sie den zugehörigen SPDX-Lizenz-Bezeichner.An SPDX license expression or path to a license file within the package, often shown in UI displays as well as nuget.org. If you’re licensing the package under a common license such as BSD-2-Clause or MIT, use the associated SPDX license identifier.
Beispiel: <license type="expression">MIT</license>For example: <license type="expression">MIT</license>

Hier ist die vollständige Liste der SPDX Lizenz Bezeichner.Here is the complete list of SPDX license identifiers. "NuGet.org" akzeptiert nur OSI oder FSF genehmigten Lizenzen Verwendung Lizenz Ausdruck.NuGet.org accepts only OSI or FSF approved licenses when using license type expression.

Wenn Ihr Paket in mehrere allgemeine-Lizenzen lizenziert ist, können Sie angeben, eine zusammengesetzte Lizenz mithilfe der SPDX Expression Syntaxversion 2.0.If your package is licensed under multiple common licenses, you can specify a composite license using the SPDX expression syntax version 2.0.
Beispiel: <license type="expression">BSD-2-Clause OR MIT</license>For example: <license type="expression">BSD-2-Clause OR MIT</license>

Wenn Sie eine Lizenz, die einen Bezeichner SPDX zugewiesen wurde, oder es eine benutzerdefinierte-Lizenz ist, können Sie eine Datei mit dem Text der Lizenz packen.If you are using a license that hasn’t been assigned an SPDX identifier, or it is a custom license, you can package a file with the license text. Zum Beispiel:For example:

<package>
  <metadata>
    ...
    <license type="file">LICENSE.txt</license>
    ...
  </metadata>
  <files>
    ...
    <file src="licenses\LICENSE.txt" target="" />
    ...
  </files>
</package>

Die genaue Syntax für Ausdrücke für die NuGet-Lizenz wird im folgenden beschrieben in ABNF.The exact syntax of NuGet's license expressions is described below in ABNF.

license-id            = <short form license identifier from https://spdx.org/spdx-specification-21-web-version#h.luq9dgcle9mo>

license-exception-id  = <short form license exception identifier from https://spdx.org/spdx-specification-21-web-version#h.ruv3yl8g6czd>

simple-expression = license-id / license-id”+”

compound-expression =  1*1(simple-expression /
                simple-expression "WITH" license-exception-id /
                compound-expression "AND" compound-expression /
                compound-expression "OR" compound-expression ) /                
                "(" compound-expression ")" )

license-expression =  1*1(simple-expression / compound-expression / UNLICENSED)

iconUrliconUrl

URL eines 64 × 64 Pixel großen Bilds mit transparentem Hintergrund, das als Symbol für das Paket auf der Benutzeroberfläche verwendet wird.A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Stellen Sie sicher, dass dieses Element die direkte Bild-URL und nicht die URL einer Webseite enthält, auf der das Bild zu finden ist.Be sure this element contains the direct image URL and not the URL of a web page containing the image. Wenn Sie beispielsweise ein Bild auf GitHub verwenden möchten, geben Sie die URL der Rohdatendatei an (z. B. 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

Ein boolescher Wert, der angibt, ob der Client den Consumer dazu auffordern muss, die Paketlizenz vor der Installation des Pakets zu akzeptieren.A Boolean value specifying whether the client must prompt the consumer to accept the package license before installing the package.

developmentDependencydevelopmentDependency

(ab Version 2.8) Boolescher Wert, der angibt, ob das Paket mit einer Abhängigkeit markiert werden soll, die nur für die Entwicklung gilt. Hierdurch wird vermieden, dass das Paket als Abhängigkeit in andere Pakete eingeschlossen wird.(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. Mit "packagereference" (NuGet 4.8) bedeutet dieses Flag auch, dass es während der Kompilierung von Ressourcen aus der Kompilierung ausgeschlossen werden.With PackageReference (NuGet 4.8+), this flag also means that it will exclude compile-time assets from compilation. Finden Sie unter DevelopmentDependency-Unterstützung für PackageReferenceSee DevelopmentDependency support for PackageReference

summarysummary

Kurzbeschreibung des Pakets zur Anzeige auf der Benutzeroberfläche.A short description of the package for UI display. Wenn diese nicht angegeben ist, wird eine gekürzte Version von description verwendet.If omitted, a truncated version of description is used.

releaseNotesreleaseNotes

(ab Version 1.5) Beschreibung der in diesem Release des Pakets enthaltenen Änderungen, die häufig auf Benutzeroberflächen wie der Registerkarte Updates des Visual Studio-Paket-Managers anstelle von Paketbeschreibungen verwendet wird.(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.

(ab Version 1.5) Urheberrechtliche Hinweise zum Paket.(1.5+) Copyright details for the package.

languagelanguage

Gebietsschema-ID des Pakets.The locale ID for the package. Informationen hierzu finden Sie unter Erstellen lokalisierter NuGet-Pakete.See Creating localized packages.

tagstags

Eine durch Leerzeichen getrennte Liste mit Tags und Schlüsselwörtern, die das Paket beschreiben und das Auffinden von Paketen mithilfe von Suchvorgängen und Filtern erleichtern.A space-delimited list of tags and keywords that describe the package and aid discoverability of packages through search and filtering.

serviceableserviceable

(ab Version 3.3) Nur zur internen Verwendung von NuGet.(3.3+) For internal NuGet use only.

repositoryrepository

Repositorymetadaten. Sie umfassen vier optionale Attribute: type und url (ab Version 4.0) sowie branch und commit (ab Version 4.6).Repository metadata, consisting of four optional attributes: type and url (4.0+), and branch and commit (4.6+). Mit diesen Attributen können Sie die NUPKG-Datei dem Repository zuordnen, mit dem es erstellt wurde. Dabei lässt sich eine Detailtiefe bis hinab zum einzelnen Branch oder Commit erzielen, durch den das Paket erstellt wurde.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. Hierbei sollte es sich um eine öffentlich zugängliche URL handeln, die direkt von einer Versionskontrollsoftware aufgerufen werden kann.This should be a publicly available url that can be invoked directly by a version control software. Dagegen sollte es keine HTML-Seite sein, da diese für den Computer vorgesehen ist.It should not be an html page as this is meant for the computer. Zur Verknüpfung mit der Projektseite verwenden Sie stattdessen das Feld projectUrl.For linking to project page, use the projectUrl field, instead.

minClientVersionminClientVersion

Gibt die mindestens erforderliche Version des NuGet-Clients an, der dieses Paket installieren kann. Dies wird von nuget.exe und dem Paket-Manager von Visual Studio erzwungen.Specifies the minimum version of the NuGet client that can install this package, enforced by nuget.exe and the Visual Studio Package Manager. Das Attribut wird verwendet, wenn das Paket von bestimmten Funktionen der .nuspec-Datei abhängig ist, die in einer bestimmten Version des NuGet-Clients hinzugefügt wurden.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. Beispielsweise sollte ein Paket, das das developmentDependency-Attribut verwendet, „2.8“ für minClientVersion angeben.For example, a package using the developmentDependency attribute should specify "2.8" for minClientVersion. Genauso sollte ein Paket, das das contentFiles-Element verwendet (vgl. nächster Abschnitt), minClientVersion auf „3.3“ festlegen.Similarly, a package using the contentFiles element (see the next section) should set minClientVersion to "3.3". Beachten Sie außerdem, dass NuGet-Clients vor Version 2.5 dieses Flag nicht erkennen und daher die Installation des Pakets unabhängig vom Inhalt von minClientVersion immer verweigern.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.

SammlungselementeCollection elements

packageTypespackageTypes

(ab Version 3.5) Eine Sammlung mit null oder mehr <packageType>-Elementen, die den Pakettyp angibt, sofern es sich nicht um ein gewöhnliches Abhängigkeitspaket handelt.(3.5+) A collection of zero or more <packageType> elements specifying the type of the package if other than a traditional dependency package. Jedes packageType-Element verfügt über die Attribute name und version.Each packageType has attributes of name and version. Informationen hierzu finden Sie unter Festlegen eines Pakettyps.See Setting a package type.

dependenciesdependencies

Eine Sammlung mit null oder mehr <dependency>-Elementen, die die Abhängigkeiten für das Paket angibt.A collection of zero or more <dependency> elements specifying the dependencies for the package. Jede Abhängigkeit verfügt über die Attribute id, version, include und exclude (ab Version 3.x).Each dependency has attributes of id, version, include (3.x+), and exclude (3.x+). Informationen hierzu finden Sie im Abschnitt Abhängigkeiten weiter unten.See Dependencies below.

frameworkAssembliesframeworkAssemblies

(ab Version 1.2) Eine Sammlung mit null oder mehr <frameworkAssembly>-Elementen, die die für das Paket erforderlichen Verweise auf .NET Framework-Assemblys benennt. Hierdurch wird sichergestellt, dass Verweise auf Projekte hinzugefügt werden, die das Paket verarbeiten.(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. Jedes frameworkAssembly-Element verfügt über die Attribute assemblyName und targetFramework.Each frameworkAssembly has assemblyName and targetFramework attributes. Informationen hierzu finden Sie unter Verweise auf Frameworkassemblys.See Specifying framework assembly references GAC below. |

referencesreferences

(ab Version 1.5) Eine Sammlung mit null oder mehr <reference>-Elementen, die Assemblys im lib-Ordner des Pakets benennt, die als Projektverweise hinzugefügt werden.(1.5+) A collection of zero or more <reference> elements naming assemblies in the package's lib folder that are added as project references. Jeder Verweis verfügt über ein file-Attribut.Each reference has a file attribute. <references> kann außerdem ein <group>-Element mit einem targetFramework-Attribut enthalten, das seinerseits <reference>-Elemente enthält.<references> can also contain a <group> element with a targetFramework attribute, that then contains <reference> elements. Wenn das Element nicht angegeben ist, werden alle Verweise in lib eingeschlossen.If omitted, all references in lib are included. Informationen hierzu finden Sie unter Explizite Assemblyverweise.See Specifying explicit assembly references below.

contentFilescontentFiles

(ab Version 3.3) Eine Sammlung von <files>-Elementen, die Inhaltsdateien angeben, die in das verarbeitende Projekt eingeschlossen werden sollen.(3.3+) A collection of <files> elements that identify content files to include in the consuming project. Diese Dateien werden zusammen mit Attributen angegeben, die beschreiben, wie sie im Projektsystem verwendet werden sollen.These files are specified with a set of attributes that describe how they should be used within the project system. Informationen hierzu finden Sie weiter unten unter Einschließen von Assemblydateien.See Specifying files to include in the package below.

filesfiles

Die <package> -Knoten enthält möglicherweise eine <files> Knoten einen gleichgeordneten Knoten zu <metadata>, und ein <contentFiles> untergeordnetes Element unter <metadata>, um anzugeben, welche Dateien Assembly- und Inhaltsdateien im Paket enthalten.The <package> node may contain a <files> node as a sibling to <metadata>, and a <contentFiles> child under <metadata>, to specify which assembly and content files to include in the package. Ausführliche Informationen hierzu finden Sie weiter unten in den Abschnitten Einschließen von Assemblydateien und Einschließen von Inhaltsdateien.See Including assembly files and Including content files later in this topic for details.

ErsetzungstokenReplacement tokens

Bei der Erstellung eines Pakets ersetzt der nuget pack-Befehl durch $ getrennte Token im <metadata>-Knoten der .nuspec-Datei durch Werte, die entweder einer Projektdatei oder der -properties-Option des pack-Befehls entstammen.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.

Geben Sie in der Befehlszeile die Tokenwerte mit nuget pack -properties <name>=<value>;<name>=<value> an.On the command line, you specify token values with nuget pack -properties <name>=<value>;<name>=<value>. Beispielsweise können Sie ein Token wie $owners$ und $desc$ in der .nuspec-Datei verwenden und die Werte zur Packzeit wie im Folgenden dargestellt bereitstellen: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"

Geben Sie die in der untenstehenden Tabelle beschriebenen Token an, um Werte aus einem Projekt zu verwenden (AssemblyInfo verweist auf Dateien wie AssemblyInfo.cs oder AssemblyInfo.vb in Properties).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).

Führen Sie anstelle von .nuspec nur nuget pack in der Projektdatei aus, um diese Token zu verwenden.To use these tokens, run nuget pack with the project file rather than just the .nuspec. Beispielsweise werden bei der Verwendung des folgenden Befehls die Token $id$ und $version$ in einer .nuspec-Datei durch die Werte AssemblyName und AssemblyVersion des Projekts ersetzt: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

In der Regel erstellen Sie die .nuspec-Datei in einem Projekt zuerst mithilfe von nuget spec MyProject.csproj, wodurch automatisch einige dieser Standardtoken eingeschlossen werden.Typically, when you have a project, you create the .nuspec initially using nuget spec MyProject.csproj which automatically includes some of these standard tokens. Wenn in einem Projekt allerdings keine Werte für erforderliche .nuspec-Elemente enthalten sind, tritt bei nuget pack ein Fehler auf.However, if a project lacks values for required .nuspec elements, then nuget pack fails. Stellen Sie außerdem bei der Änderung von Projektwerten sicher, dass Sie diese neu erstellen, bevor Sie das Paket erstellen. Dies können Sie ganz einfach über die Option build des Packbefehls tun.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.

Mit Ausnahme von $configuration$ werden Werte im Projekt gegenüber Werten bevorzugt, die demselben Token in der Befehlszeile zugeordnet sind.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 WertquelleValue source WertValue
$id$$id$ ProjektdateiProject file "AssemblyName" (Titel) aus der ProjektdateiAssemblyName (title) from the project file
$version$$version$ AssemblyInfoAssemblyInfo „AssemblyInformationalVersion“, falls vorhanden, andernfalls „AssemblyVersion“AssemblyInformationalVersion if present, otherwise AssemblyVersion
$authors$$authors$ AssemblyInfoAssemblyInfo AssemblyCompanyAssemblyCompany
$title$$title$ AssemblyInfoAssemblyInfo AssemblyTitleAssemblyTitle
$description$$description$ AssemblyInfoAssemblyInfo AssemblyDescriptionAssemblyDescription
$copyright$$copyright$ AssemblyInfoAssemblyInfo AssemblyCopyrightAssemblyCopyright
$configuration$$configuration$ Assembly-DLLAssembly DLL Konfiguration, die zur Erstellung der Assembly verwendet wird und standardmäßig auf „Debug“ festgelegt ist.Configuration used to build the assembly, defaulting to Debug. Achten Sie darauf, dass Sie stets -properties Configuration=Release in der Befehlszeile verwenden, um mithilfe einer Releasekonfiguration ein Paket zu erstellen.Note that to create a package using a Release configuration, you always use -properties Configuration=Release on the command line.

Token können auch zum Auflösen von Pfaden verwendet werden, wenn Sie Assemblydateien und Inhaltsdateien hinzufügen.Tokens can also be used to resolve paths when you include assembly files and content files. Die Namen der Token und der MSBuild-Eigenschaften sind identisch, wodurch Sie abhängig von der aktuellen Buildkonfiguration Dateien auswählen können, die eingeschlossen werden sollen.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. Wenn Sie beispielsweise die folgenden Token in der .nuspec-Datei verwendenFor example, if you use the following tokens in the .nuspec file:

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

und eine Assembly mit der Release-Konfiguration in MSBuild erstellen, deren AssemblyName den Wert LoggingLibrary hat, sehen die dadurch entstandenen Zeilen in der .nuspec-Datei in den Paketen wie folgt aus: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>

AbhängigkeitselementDependencies element

Das <dependencies>-Element in <metadata> enthält eine beliebige Anzahl von <dependency>-Elementen, die andere Pakete angeben, von denen das Paket der obersten Ebene abhängig ist.The <dependencies> element within <metadata> contains any number of <dependency> elements that identify other packages upon which the top-level package depends. Im Folgenden werden die Attribute für jede <dependency> dargestellt:The attributes for each <dependency> are as follows:

AttributAttribute BeschreibungDescription
id (Erforderlich) Paket-ID der Abhängigkeit, z.B. „EntityFramework“ und „NUnit“. Dies ist der Name des Pakets, der auf nuget.org auf einer Paketseite angezeigt wird.(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 (Erforderlich) Bereich an Versionen, die als Abhängigkeiten akzeptiert werden.(Required) The range of versions acceptable as a dependency. Die genaue Syntax finden Sie unter Version Ranges and Wildcards (Versionsbereiche und Platzhalter).See Package versioning for exact syntax.
includeinclude Eine kommagetrennte Liste mit include- und exclude-Tags (siehe nachfolgende Tabelle), die die Abhängigkeit angibt, die in das endgültige Paket eingeschlossen werden soll.A comma-delimited list of include/exclude tags (see below) indicating of the dependency to include in the final package. Der Standardwert ist all.The default value is all.
excludeexclude Eine kommagetrennte Liste mit include- und exclude-Tags (siehe nachfolgende Tabelle), die die Abhängigkeit angibt, die aus dem endgültigen Paket ausgeschlossen werden soll.A comma-delimited list of include/exclude tags (see below) indicating of the dependency to exclude in the final package. Der Standardwert ist build,analyzers. Er kann überschrieben werden.The default value is build,analyzers which can be over-written. Allerdings werden implizit auch content/ ContentFiles aus dem endgültigen Paket ausgeschlossen, was sich nicht überschreiben lässt.But content/ ContentFiles are also implicitly excluded in the final package which can't be over-written. exclude-Tags haben Vorrang vor include-Tags.Tags specified with exclude take precedence over those specified with include. Beispielsweise hat include="runtime, compile" exclude="compile" die gleiche Wirkung wie include="runtime".For example, include="runtime, compile" exclude="compile" is the same as include="runtime".
Include-/Exclude-TagInclude/Exclude tag Betroffene Ordner auf dem ZielAffected folders of the target
contentFilescontentFiles ContentContent
runtimeruntime Runtime, Resources und FrameworkAssembliesRuntime, Resources, and FrameworkAssemblies
compilecompile liblib
Buildbuild Build (MSBuild-Eigenschaften und -Ziele)build (MSBuild props and targets)
nativenative nativenative
nonenone Keine OrdnerNo folders
allall Alle OrdnerAll folders

Beispielsweise verweisen die folgenden Zeilen auf Abhängigkeiten von PackageA Version 1.1.0 und höher und PackageB Version 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>

In den folgenden Zeilen wird zwar auf Abhängigkeiten von denselben Paketen verwiesen, allerdings wird auch angegeben, dass die Ordner contentFiles und build aus PackageA sowie alle anderen Ordner bis auf native und compile aus PackageB eingeschlossen werden sollen.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>

Hinweis: Bei der Erstellung einer .nuspec-Datei mithilfe von nuget spec aus einem Projekt werden in diesem Projekt bestehende Abhängigkeiten automatisch in die resultierende .nuspec-Datei eingeschlossen.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.

AbhängigkeitsgruppenDependency groups

Version 2.0 und höherVersion 2.0+

Als Alternative zu einer einzelnen flachen Liste können Abhängigkeiten auf der Grundlage des Frameworkprofils des Zielprojekts mithilfe von <group>-Elementen in <dependencies> angegeben werden.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>.

Jede Gruppe verfügt über ein Attribut mit dem Namen targetFramework und enthält null oder mehr <dependency>-Elemente.Each group has an attribute named targetFramework and contains zero or more <dependency> elements. Diese Abhängigkeiten werden gemeinsam installiert, wenn das Zielframework kompatibel mit dem Frameworkprofil des Projekts ist.Those dependencies are installed together when the target framework is compatible with the project's framework profile.

Das <group>-Element ohne ein targetFramework-Attribut wird als Standard- oder Fallbackliste der Abhängigkeiten verwendet.The <group> element without a targetFramework attribute is used as the default or fallback list of dependencies. Die genauen Frameworkbezeichner finden Sie unter Zielframeworks.See Target frameworks for the exact framework identifiers.

Wichtig

Das Gruppenformat kann nicht mit einer flachen Liste vermischt werden.The group format cannot be intermixed with a flat list.

Im folgenden Beispiel werden verschiedene Variationen des <group>-Elements dargestellt: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>

Explizite AssemblyverweiseExplicit assembly references

Das <references>-Element gibt ausdrücklich die Assemblyverweise an, auf die das Zielprojekt bei der Verwendung des Pakets verweisen soll.The <references> element explicitly specifies the assemblies that the target project should reference when using the package. Wenn dieses Element vorhanden ist, fügt NuGet nur Verweise auf die aufgelisteten Assemblys hinzu. Es werden keine Verweise auf andere Assemblys im lib-Ordner des Pakets hinzugefügt.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.

Beispielsweise gibt das folgende <references>-Element NuGet die Anweisung, Verweise auch dann nur auf xunit.dll und xunit.extensions.dll hinzuzufügen, wenn zusätzliche Assemblys im Paket enthalten sind: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>

In der Regel werden Verweise nur für Assemblys zur Entwurfszeit verwendet.Explicit references are typically used for design-time only assemblies. Beispielsweise müssen sich Vertragsassemblys bei der Verwendung von Codeverträgen neben den Runtimeassemblys befinden, die sie erweitern, damit Visual Studio sie finden kann. Allerdings muss das Projekt auf die Vertragsassemblys verweisen, und sie dürfen auch nicht in den bin-Ordner des Projekts kopiert werden.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.

Genauso können explizite Verweise für Komponententestframeworks wie XUnit verwendet werden, in denen sich zwar die Toolassemblys neben den Runtimeassemblys befinden, jedoch nicht als Projektverweise eingeschlossen werden müssen.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.

VerweisgruppenReference groups

Als Alternative zu einer einzelnen flachen Liste können mithilfe von <group>-Elementen in <references> Verweise auf der Grundlage des Frameworkprofils des Zielprojekts angegeben werden.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>.

Jede Gruppe verfügt über ein Attribut namens targetFramework und enthält null oder mehr <reference>-Elemente.Each group has an attribute named targetFramework and contains zero or more <reference> elements. Diese Verweise werden einem Projekt hinzugefügt, wenn das Zielframework mit dem Frameworkprofil des Projekts kompatibel ist.Those references are added to a project when the target framework is compatible with the project's framework profile.

Das <group>-Element ohne targetFramework-Attribut wird als Standard- oder Fallbackliste für Verweise verwendet.The <group> element without a targetFramework attribute is used as the default or fallback list of references. Die genauen Frameworkbezeichner finden Sie unter Zielframeworks.See Target frameworks for the exact framework identifiers.

Wichtig

Das Gruppenformat kann nicht mit einer flachen Liste vermischt werden.The group format cannot be intermixed with a flat list.

Im folgenden Beispiel werden verschiedene Variationen des <group>-Elements dargestellt: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>

Verweise auf FrameworkassemblysFramework assembly references

Frameworkassemblys gehören zum .NET Framework und sollten für jeden vorhandenen Computer bereits im globalen Assemblycache vorhanden sein.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. Durch Angabe dieser Assemblys im <frameworkAssemblies>-Element können Pakete sicherstellen, dass erforderliche Verweise einem Projekt hinzugefügt werden, falls das Projekt noch nicht über solche Verweise verfügt.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. Derartige Assemblys sind natürlich nicht von Anfang an in Paketen enthalten.Such assemblies, of course, are not included in a package directly.

Das <frameworkAssemblies>-Element enthält null oder mehr <frameworkAssembly>-Elemente, die jeweils die folgenden Attribute angeben:The <frameworkAssemblies> element contains zero or more <frameworkAssembly> elements, each of which specifies the following attributes:

AttributAttribute BeschreibungDescription
assemblyNameassemblyName (Erforderlich) Vollqualifizierter Assemblyname.(Required) The fully qualified assembly name.
targetFrameworktargetFramework (Optional) Gibt das Zielframework an, auf das sich dieser Verweis bezieht.(Optional) Specifies the target framework to which this reference applies. Das Fehlen des Attributs weist darauf hin, dass der Verweis für alle Frameworks gilt.If omitted, indicates that the reference applies to all frameworks. Die genauen Frameworkbezeichner finden Sie unter Zielframeworks.See Target frameworks for the exact framework identifiers.

Das folgende Beispiel zeigt einen Verweis auf System.Net für alle Zielframeworks sowie einen weiteren Verweis auf System.ServiceModel, der ausschließlich für .NET Framework 4.0 gilt: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>

Einschließen von AssemblydateienIncluding assembly files

Wenn Sie die unter Erstellen von NuGet-Paketen beschriebenen Konventionen beachten, müssen Sie nicht explizit eine Liste mit Dateien in der .nuspec-Datei angeben.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. Der nuget pack-Befehl ruft die benötigten Dateien automatisch ab.The nuget pack command automatically picks up the necessary files.

Wichtig

Wenn ein Paket in einem Projekt installiert wird, fügt NuGet der DLL des Pakets automatisch Assemblyverweise hinzu. Verweise namens .resources.dll werden dabei allerdings nicht hinzugefügt, da angenommen wird, dass es sich dabei um lokalisierte Satellitenassemblys handelt.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. Vermeiden Sie aus diesem Grund die Verwendung von .resources.dll für Dateien, die darüber hinaus wichtigen Paketcode enthalten.For this reason, avoid using .resources.dll for files that otherwise contain essential package code.

Wenn Sie diese automatischen Abläufe umgehen und explizit steuern möchten, welche Dateien in einem Paket enthalten sein sollen, legen Sie ein <files>-Element als untergeordnetes Element von <package> (und gleichgeordnetes Element von <metadata>) fest, das jede Datei mit einem separaten <file>-Element benennt.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. Zum Beispiel:For example:

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

Das <files>-Element wird außerdem bei NuGet 2.x und früher sowie bei Projekten, die packages.config verwenden, zum Einschließen unveränderlicher Inhaltsdateien während der Paketinstallation benutzt.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. Seit NuGet 3.3 und bei Projekten, die PackageReference verwenden, wird stattdessen das <contentFiles>-Element verwendet.With NuGet 3.3+ and projects PackageReference, the <contentFiles> element is used instead. Weitere Informationen finden Sie unter Einschließen von Inhaltsdateien.See Including content files below for details.

DateielementattributeFile element attributes

Jedes <file>-Element gibt die folgenden Attribute an:Each <file> element specifies the following attributes:

AttributAttribute BeschreibungDescription
srcsrc Speicherort der einzuschließenden Dateien. Hierbei werden die vom exclude-Attribut angegebenen Ausschlüsse berücksichtigt.The location of the file or files to include, subject to exclusions specified by the exclude attribute. Der Pfad ist relativ zur .nuspec-Datei, sofern kein absoluter Pfad angegeben ist.The path is relative to the .nuspec file unless an absolute path is specified. Das Platzhalterzeichen * ist zulässig, und das doppelte Platzhalterzeichen ** impliziert eine rekursive Ordnersuche.The wildcard character * is allowed, and the double wildcard ** implies a recursive folder search.
targettarget Relativer Pfad zu dem Ordner im Paket, in dem die Quelldateien abgelegt sind. Dieser muss mit lib, content, build oder tools beginnen.The relative path to the folder within the package where the source files are placed, which must begin with lib, content, build, or tools. Informationen hierzu finden Sie unter Erstellen der NUSPEC-Datei > Aus einem konventionsbasierten Arbeitsverzeichnis.See Creating a .nuspec from a convention-based working directory.
excludeexclude Eine mit Semikolons getrennte Datei oder ein Muster für Dateien, die aus dem src-Speicherort ausgeschlossen werden.A semicolon-delimited list of files or file patterns to exclude from the src location. Das Platzhalterzeichen * ist zulässig, und das doppelte Platzhalterzeichen ** impliziert eine rekursive Ordnersuche.The wildcard character * is allowed, and the double wildcard ** implies a recursive folder search.

BeispieleExamples

Einzelne AssemblySingle assembly

Source file:
    library.dll

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

Packaged result:
    lib\library.dll

Einzelne Assembly, die für ein Zielframework spezifisch istSingle 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

Mehrere DLLs mit Verwendung eines PlatzhalterzeichensSet 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

DLLs für verschiedene FrameworksDLLs 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

Ausschließen von DateienExcluding 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)

Einschließen von InhaltsdateienIncluding content files

Bei Inhaltsdateien handelt es sich um unveränderliche Dateien, die ein Paket in ein Projekt einschließen muss.Content files are immutable files that a package needs to include in a project. Da sie unveränderlich sind, sollten sie auch nicht von dem verarbeitenden Projekt geändert werden.Being immutable, they are not intended to be modified by the consuming project. Zu den Inhaltsdateien gehören z.B.:Example content files include:

  • Bilder, die als Ressourcen eingebettet werdenImages that are embedded as resources
  • bereits kompilierte QuelldateienSource files that are already compiled
  • Skripts, die in die Buildausgabe des Projekts eingeschlossen werden müssenScripts that need to be included with the build output of the project
  • Konfigurationsdateien für das Paket, die zwar in das Projekt eingeschlossen werden müssen, an denen jedoch keine projektspezifischen Änderungen vorgenommen werden müssenConfiguration files for the package that need to be included in the project but don't need any project-specific changes

Inhaltsdateien werden mithilfe eines <files>-Elements in ein Paket eingeschlossen. Dieses Element gibt den content-Ordner im target-Attribut an.Content files are included in a package using the <files> element, specifying the content folder in the target attribute. Allerdings werden diese Dateien ignoriert, wenn das Paket per PackageReference in einem Projekt installiert wird, das stattdessen das <contentFiles>-Element verwendet.However, such files are ignored when the package is installed in a project using PackageReference, which instead uses the <contentFiles> element.

Im Idealfall geben Pakete die Inhaltsdateien in beiden Elementen an, um ein Höchstmaß an Kompatibilität mit den verarbeitenden Projekten zu erreichen.For maximum compatibility with consuming projects, a package ideally specifies the content files in both elements.

Verwenden des Dateielements für InhaltsdateienUsing the files element for content files

Verwenden Sie für Inhaltsdateien einfach dasselbe Format wie für Assemblydateien. Geben Sie dabei allerdings wie in den folgenden Beispielen dargestellt content als Basisordner im target-Attribut an.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.

Grundlegende InhaltsdateienBasic 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

Inhaltsdateien mit VerzeichnisstrukturContent 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

Inhaltsdatei für ein bestimmtes ZielframeworkContent 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

Inhaltsdatei, die in einen Ordner mit einem Punkt im Namen kopiert wirdContent file copied to a folder with dot in name

In diesem Fall erkennt NuGet, dass die Erweiterung in target nicht mit der Erweiterung in src übereinstimmt, und behandelt diesen Namensbestandteil in target als Ordner: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

Inhaltsdateien ohne ErweiterungenContent files without extensions

Verwenden Sie die Platzhalterzeichen * oder **, um Dateien ohne Erweiterungen einzuschließen: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

Inhaltsdateien mit langen Pfaden und langen ZielenContent files with deep path and deep target

In diesem Fall nimmt NuGet an, dass das Ziel ein Dateiname und kein Ordner ist, da die Dateierweiterungen von Quelle und Ziel übereinstimmen: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

Umbenennen einer Inhaltsdatei im PaketRenaming 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

Ausschließen von DateienExcluding 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)

Verwenden des contentFiles-Elements für InhaltsdateienUsing the contentFiles element for content files

NuGet 4.0 und höher mit PackageReferenceNuGet 4.0+ with PackageReference

Standardmäßig legen Pakete Inhalte in einem contentFiles-Ordner (siehe unten) ab, in den nuget pack alle Dateien mithilfe von Standardattributen eingeschlossen hat.By default, a package places content in a contentFiles folder (see below) and nuget pack included all files in that folder using default attributes. In diesem Fall ist es gar nicht notwendig, einen contentFiles-Knoten in .nuspec einzuschließen.In this case it's not necessary to include a contentFiles node in the .nuspec at all.

Um zu steuern, welche Dateien eingeschlossen werden, gibt das <contentFiles>-Element eine Sammlung mit <files>-Elementen an, die die einzuschließenden Dateien präzise angeben.To control which files are included, the <contentFiles> element specifies is a collection of <files> elements that identify the exact files include.

Die Angabe der Dateien erfolgt mithilfe mehrerer Attribute, die beschreiben, wie sie im Projektsystem verwendet werden sollen:These files are specified with a set of attributes that describe how they should be used within the project system:

AttributAttribute BeschreibungDescription
includeinclude (Erforderlich) Speicherort der Dateien, die eingeschlossen werden sollen. Hierbei werden die vom exclude-Attribut angegebenen Ausschlüsse berücksichtigt.(Required) The location of the file or files to include, subject to exclusions specified by the exclude attribute. Der Pfad ist relativ zur .nuspec-Datei, sofern kein absoluter Pfad angegeben ist.The path is relative to the .nuspec file unless an absolute path is specified. Das Platzhalterzeichen * ist zulässig, und das doppelte Platzhalterzeichen ** impliziert eine rekursive Ordnersuche.The wildcard character * is allowed, and the double wildcard ** implies a recursive folder search.
excludeexclude Eine mit Semikolons getrennte Datei oder ein Muster für Dateien, die aus dem src-Speicherort ausgeschlossen werden.A semicolon-delimited list of files or file patterns to exclude from the src location. Das Platzhalterzeichen * ist zulässig, und das doppelte Platzhalterzeichen ** impliziert eine rekursive Ordnersuche.The wildcard character * is allowed, and the double wildcard ** implies a recursive folder search.
buildActionbuildAction Die Buildaktion, die dem Inhaltselement für MSBuild zugewiesen werden soll, z.B. Content, None, Embedded Resource oder Compile. Die Standardeinstellung ist 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 Boolescher Wert, mit dem angegeben wird, ob Inhaltselemente in den Buildausgabeordner (oder den Veröffentlichungsausgabeordner) kopiert werden sollen.A Boolean indicating whether to copy content items to the build (or publish) output folder. Der Standardwert ist FALSE.The default is false.
flattenflatten Boolescher Wert, der angibt, ob Inhaltselemente in einen Ordner in der Buildausgabe kopiert werden sollen (TRUE) oder die Ordnerstruktur in den Paketen beibehalten werden soll (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). Dieses Flag funktioniert nur, wenn das copyToOutput-Flag auf TRUE festgelegt ist.This flag only works when copyToOutput flag is set to true. Der Standardwert ist FALSE.The default is false.

Beim Installieren eines Pakets wendet NuGet die untergeordneten Elemente von <contentFiles> von oben nach unten an.When installing a package, NuGet applies the child elements of <contentFiles> from top to bottom. Wenn mehrere Einträge derselben Datei entsprechen, werden sie alle angewendet.If multiple entries match the same file then all entries are applied. Der oberste Eintrag hat im Falle eines Attributkonflikts Vorrang vor den untergeordneten Einträgen.The top-most entry overrides the lower entries if there is a conflict for the same attribute.

PaketordnerstrukturPackage folder structure

Das Paketprojekt sollte Inhalte anhand des folgenden Musters strukturieren:The package project should structure content using the following pattern:

/contentFiles/{codeLanguage}/{TxM}/{any?}
  • codeLanguages kann cs, vb, fs, any oder das klein geschriebene Äquivalent einer $(ProjectLanguage) sein.codeLanguages may be cs, vb, fs, any, or the lowercase equivalent of a given $(ProjectLanguage)
  • TxM ist ein für das Zielframework zulässiger Moniker, den NuGet unterstützt (Informationen hierzu finden Sie unter Zielframeworks).TxM is any legal target framework moniker that NuGet supports (see Target frameworks).
  • Ans Ende dieser Syntax kann eine beliebige Ordnerstruktur angehängt werden.Any folder structure may be appended to the end of this syntax.

Zum Beispiel: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

Für leere Ordner kann . eingefügt werden, wenn diese keine Inhalte mehr für bestimmte Sprachen und TxM bereitstellen sollen. Zum Beispiel: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/.

contentFiles-BeispielabschnittExample 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>

NUSPEC-BeispieldateienExample nuspec files

Einfache .nuspec-Datei, die weder Abhängigkeiten noch Dateien enthältA 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>
        <license type="expression">MIT</license>
    </metadata>
</package>

.nuspec-Datei mit AbhängigkeitenA .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>

.nuspec-Datei mit DateienA .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>

.nuspec-Datei mit FrameworkassemblysA .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>

In diesem Beispiel werden die folgenden Elemente für bestimmte Projektziele installiert:In this example, the following are installed for specific project targets:

  • .NET4: System.Web und System.Net.NET4 -> System.Web, System.Net
  • .NET4-Clientprofil: 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