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

Inhalte dieses Themas:In this topic:

Projekttyp KompatibilitätProject type compatibility

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>

Für eine übersichtliche Darstellung des Schemas öffnen Sie die Schemadatei im Entwurfsmodus in Visual Studio, und klicken Sie 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 auch die Datei 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 ähnlich ist, wenn Sie größtenteils erweitert ist: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.

Diese Elemente müssen in einem <metadata>-Element angezeigt werden.These elements must appear within a <metadata> element.

idid

Der Paketbezeichner, der die Groß- und Kleinschreibung nicht berücksichtigt und auf nuget.org oder im für das Paket verwendeten Katalog eindeutig sein muss.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 für eine URL unzulässige Zeichen enthalten. Sie müssen 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 Choosing a unique package identifier (Auswählen eines eindeutigen Paketbezeichners).See Choosing a unique package identifier for guidance.

versionversion

Die Version des Pakets, die dem Muster Hauptversion.Nebenversion.Patch folgt.The version of the package, following the major.minor.patch pattern. Versionsnummern enthalten möglicherweise, wie unter Paketversionsverwaltung beschrieben, ein Suffix der Vorabversion.Version numbers may include a pre-release suffix as described in Package versioning.

descriptiondescription

Eine Beschreibung des Pakets für die Anzeige der Benutzeroberfläche.A description of the package for UI display.

authorsauthors

Eine durch Trennzeichen getrennte Liste von Paket Autoren, die mit den Profilnamen auf nuget.org übereinstimmen. Diese werden in der nuget-Galerie auf nuget.org angezeigt und werden verwendet, um die Verweise auf Pakete durch dieselben Autoren zu über 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

ownersowners

Eine durch Trennzeichen getrennte Liste der Paket Ersteller, die Profilnamen auf nuget.org verwenden. Dies ist oft die gleiche Liste wie in authorsund wird beim Hochladen des Pakets in nuget.org ignoriert. Weitere Informationen finden Sie unter Verwalten von Paket Besitzern 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

Eine URL für die Paket-Homepage, häufig auf der Benutzeroberfläche sowie auf nuget.org angezeigt.A URL for the package's home page, often shown in UI displays as well as nuget.org.

licenseUrllicenseUrl

Wichtig

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

Eine URL für die Lizenz des Pakets, die häufig in Benutzeroberflächen wie nuget.org angezeigt wird.A URL for the package's license, often shown in UIs like nuget.org.

licenselicense

Ein spdx-Lizenz Ausdruck oder Pfad zu einer Lizenzdatei innerhalb des Pakets, die häufig in Benutzeroberflächen wie nuget.org angezeigt wird. Wenn Sie das Paket unter einer gemeinsamen Lizenz lizenzieren, wie z. b. mit oder der BSD-2-Klausel, verwenden Sie den zugehörigen spdx-Lizenz Bezeichner.An SPDX license expression or path to a license file within the package, often shown in UIs like nuget.org. If you're licensing the package under a common license, like MIT or BSD-2-Clause, use the associated SPDX license identifier. Beispiel:For example:

<license type="expression">MIT</license>

Hinweis

NuGet.org akzeptiert nur Lizenz Ausdrücke, die von der Open Source-Initiative oder der kostenlosen Software Foundation genehmigt werden.NuGet.org only accepts license expressions that are approved by the Open Source Initiative or the Free Software Foundation.

Wenn Ihr Paket unter mehreren gängigen Lizenzen lizenziert ist, können Sie eine zusammengesetzte Lizenz mithilfe der spdx-Ausdruckssyntax Version 2,0angeben.If your package is licensed under multiple common licenses, you can specify a composite license using the SPDX expression syntax version 2.0. Beispiel:For example:

<license type="expression">BSD-2-Clause OR MIT</license>

Wenn Sie eine benutzerdefinierte Lizenz verwenden, die nicht von Lizenz Ausdrücken unterstützt wird, können Sie eine .txt oder eine .md Datei mit dem Lizenztext verpacken.If you use a custom license that isn't supported by license expressions, you can package a .txt or .md file with the license's text. Beispiel:For example:

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

Die MSBuild-Entsprechung finden Sie unter packen eines Lizenz Ausdrucks oder einer Lizenzdatei.For the MSBuild equivalent, take a look at Packing a license expression or a license file.

Die genaue Syntax der nuget-Lizenz Ausdrücke wird unten in ABNFbeschrieben.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

Wichtig

IconUrl ist veraltet.iconUrl is deprecated. Verwenden Sie stattdessen das-Symbol.Use icon instead.

Eine URL für ein 128 x 128-Bild mit Transparenz Hintergrund, das als Symbol für das Paket in der Anzeige der Benutzeroberfläche verwendet werden soll.A URL for a 128x128 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 nur die URL einer Webseite enthält, die das Bild enthält.Be sure this element contains the direct image URL and not the URL of a web page containing the image. Wenn Sie z. b. ein Image von GitHub verwenden möchten, verwenden Sie die URL der Rohdatendatei wie 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>.

iconicon

Dabei handelt es sich um einen Pfad zu einer Bilddatei innerhalb des Pakets, die häufig in UIs like nuget.org als Paket Symbol angezeigt wird.It is a path to an image file within the package, often shown in UIs like nuget.org as the package icon. Die Größe der Bild Datei ist auf 1 MB beschränkt.Image file size is limited to 1 MB. Unterstützte Dateiformate sind JPEG und PNG.Supported file formats include JPEG and PNG. Wir empfehlen eine Bildauflösung von 128 x 128.We recommend an image resolution of 128x128.

Beim Erstellen eines Pakets mithilfe von "nuget. exe" fügen Sie z. b. Folgendes zu "nuspec" hinzu:For example, you would add the following to your nuspec when creating a package using nuget.exe:

<package>
  <metadata>
    ...
    <icon>images\icon.png</icon>
    ...
  </metadata>
  <files>
    ...
    <file src="..\icon.png" target="images\" />
    ...
  </files>
</package>

Paket Symbol nuspec-Beispiel.Package Icon nuspec sample.

Wenn Sie die MSBuild-Entsprechung benötigen, sehen Sie sich das Packen einer Symbolbild Dateian.For the MSBuild equivalent, take a look at Packing an icon image file.

Tipp

Sie können sowohl icon als auch iconUrl angeben, um die Abwärtskompatibilität mit Quellen zu gewährleisten, die iconnicht unterstützen.You can specify both icon and iconUrl to maintain backward compatibility with sources that do not support icon. Visual Studio unterstützt icon für Pakete, die in einer zukünftigen Version aus einer Ordner basierten Quelle stammen.Visual Studio will support icon for packages coming from a folder-based source in a future release.

requireLicenseAcceptancerequireLicenseAcceptance

Ein boolescher Wert, der angibt, ob der Client den Benutzer 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

(2.8 und höher) Ein boolescher Wert, der angibt, ob das Paket mit einer Abhängigkeit markiert werden soll, die nur für die Entwicklung gilt, wodurch vermieden wird, dass das Paket als Abhängigkeit in andere Pakete eingefügt 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 packagereferen(nuget 4.8 und höher) bedeutet dieses Flag auch, dass die Kompilierzeit Ressourcen von der Kompilierung ausgeschlossen werden.With PackageReference (NuGet 4.8+), this flag also means that it will exclude compile-time assets from compilation. Weitere Informationen finden Sie unter Unterstützung von "developmentdependependenz "See DevelopmentDependency support for PackageReference

summarysummary

Wichtig

summary ist veraltet.summary is being deprecated. Verwenden Sie stattdessen description.Use description instead.

Eine kurze Beschreibung des Pakets für die Anzeige der Benutzeroberfläche.A short description of the package for UI display. Wenn diese nicht angegeben wird, wird eine gekürzte Version von description verwendet.If omitted, a truncated version of description is used.

releaseNotesreleaseNotes

(1.5 und höher) Eine Beschreibung der in diesem Release des Pakets enthaltenen Änderungen, die häufig in 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.

(1.5 und höher) Copyright-Informationen zum Paket.(1.5+) Copyright details for the package.

languagelanguage

Die Gebietsschema-ID des Pakets.The locale ID for the package. Informationen dazu finden Sie unter Creating localized packages (Erstellen von lokalisierten Paketen).See Creating localized packages.

tagstags

Eine durch Leerzeichen getrennte Liste mit Tags und Schlüsselwörtern, die das Paket beschreiben und zum Ermitteln von Paketen über Suchvorgänge und Filter beitragen.A space-delimited list of tags and keywords that describe the package and aid discoverability of packages through search and filtering.

serviceableserviceable

(3.3 und höher) Nur für die interne Verwendung von NuGet.(3.3+) For internal NuGet use only.

repositoryrepository

Repository-Metadaten, bestehend aus vier optionalen Attributen: type und url (4.0und höher) sowie branch und commit (4.6und höher).Repository metadata, consisting of four optional attributes: type and url (4.0+), and branch and commit (4.6+). Diese Attribute ermöglichen es Ihnen, den .nupkg dem Repository zuzuordnen, von dem es erstellt wurde, und mit der Möglichkeit, den einzelnen branchnamen und/oder den SHA-1-Hash, der das Paket erstellt hat, so detailliert wie möglich zu machen.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 name and / or commit SHA-1 hash 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. Verwenden Sie zum Verknüpfen mit Project Seite stattdessen das Feld projectUrl.For linking to project page, use the projectUrl field, instead.

Beispiel:For example:

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        ...
        <repository type="git" url="https://github.com/NuGet/NuGet.Client.git" branch="dev" commit="e1c65e4524cd70ee6e22abe33e6cb6ec73938cb3" />
        ...
    </metadata>
</package>

titletitle

Ein benutzerfreundlicher Titel des Pakets, das in einigen Benutzeroberflächen anzeigen verwendet werden kann.A human-friendly title of the package which may be used in some UI displays. (nuget.org und der Paket-Manager in Visual Studio zeigen keinen Titel an.)(nuget.org and the Package Manager in Visual Studio do not show title)

AuflistungselementeCollection elements

packageTypespackageTypes

(3.5 und höher) Eine Auflistung, die kein <packageType>-Element oder mindestens eins enthält und den Pakettyp angibt, wenn 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. Jeder „packageType“ verfügt über Attribute von name und version.Each packageType has attributes of name and version. Informationen dazu finden Sie unter Setting a package type (Festlegen eines Pakettypen).See Setting a package type.

dependenciesdependencies

Eine Auflistung, die kein <dependency>-Element oder mindestens eins enthält und 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 Attribute von id, version, include und exclude (3.x und höher).Each dependency has attributes of id, version, include (3.x+), and exclude (3.x+). Informationen dazu finden Sie im Abschnitt Abhängigkeiten.See Dependencies below.

frameworkAssembliesframeworkAssemblies

(1.2 und höher) Eine Auflistung, die kein <frameworkAssembly>-Element oder mindestens eins enthält und die für das Paket erforderlichen Verweise auf .NET Framework-Assemblys erkennt und sicherstellt, dass Verweise zu Projekten 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 dazu finden Sie unter Specifying framework assembly references GAC (Angeben von GAC-Verweisen auf Frameworkassemblys).See Specifying framework assembly references GAC below.

Verweisereferences

(1.5 und höher) Eine Auflistung, die kein <reference>-Element oder mindestens eins enthält, das Assemblys in dem 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 anschließend <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 eingefügt.If omitted, all references in lib are included. Informationen dazu finden Sie unter Specifying explicit assembly references (Angeben von expliziten Assemblyverweisen).See Specifying explicit assembly references below.

contentFilescontentFiles

(3.3 und höher) Eine Auflistung von <files>-Elementen, die Inhaltsdateien ermitteln, die in das verarbeitende Projekt eingefügt werden sollen.(3.3+) A collection of <files> elements that identify content files to include in the consuming project. Diese Dateien werden zusammen mit mehreren Attributen angegeben, die beschreiben, wie sie in dem 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 dazu finden Sie unter Specifying files to include in the package (Angeben von Dateien, die in das Paket eingefügt werden sollen).See Specifying files to include in the package below.

filesfiles

Der <package> Knoten kann einen <files> Knoten als gleich geordnetes Element für <metadata>und ein untergeordnetes <contentFiles> unter <metadata>enthalten, um anzugeben, welche Assembly-und Inhalts Dateien in das Paket eingeschlossen werden sollen.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. Details dazu finden Sie im Folgenden in den Abschnitten Einfügen von Assemblydateien und Einfügen von Inhaltsdateien.See Including assembly files and Including content files later in this topic for details.

Metadatenattributemetadata attributes

minClientVersionminClientVersion

Gibt die minimale 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. Dieses 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 diese Kennzeichnung nicht erkennen und daher die Installation des Pakets, unabhängig vom Inhalt von , immerminClientVersion 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.

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata minClientVersion="100.0.0.1">
        <id>dasdas</id>
        <version>2.0.0</version>
        <title />
        <authors>dsadas</authors>
        <owners />
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>My package description.</description>
    </metadata>
    <files>
        <file src="content\one.txt" target="content\one.txt" />
    </files>
</package>

ErsetzungstokensReplacement tokens

Bei der Erstellung eines Pakets ersetzt der nuget pack-Befehl durch $ getrennte Tokens im .nuspec-Knoten der <metadata>-Datei durch Werte, die entweder einer Projektdatei oder dem pack-Schalter des -properties-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 Tokens an, um Werte aus einem Projekt zu verwenden (AssemblyInfo verweist auf Dateien wie Properties oder AssemblyInfo.cs in 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).

Führen Sie anstelle von nuget pack nur .nuspec in der Projektdatei aus, um diese Tokens 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 Tokens $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 .nuspec in einem Projekt zuerst mithilfe von nuget spec MyProject.csproj, wodurch automatisch einige dieser Standardtokens eingefügt 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, schlägt nuget pack fehl.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 den build-Paketschalter des Befehls 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 in dem 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 valueValue
$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
$author$$author$ 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 „Debuggen“ 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.

Tokens 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 Tokens und der MSBuild-Eigenschaften stimmen miteinander überein, wodurch Sie abhängig von der aktuellen Buildkonfiguration Dateien auswählen können, die eingefügt 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 Tokens 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 Sie eine Assembly mit der AssemblyName-Konfiguration in MSBuild erstellen, deren LoggingLibrary``Release ist, 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 finden, von denen die Pakete auf der obersten Ebene abhängig sind.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:

attributeAttribute BESCHREIBUNGDescription
id (Erforderlich) Die Paket-ID der Abhängigkeit, z.B. „EntityFramework“ und „NUnit“, die der Name des Pakets „nuget.org“ ist, wird auf einer Paketseite angezeigt.(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) Der Bereich an Versionen, die als Abhängigkeiten akzeptiert werden.(Required) The range of versions acceptable as a dependency. Die genaue Syntax finden Sie unter Paketversionsverwaltung.See Package versioning for exact syntax. Gleit Komma Versionen werden nicht unterstützt.Floating versions are not supported.
includeinclude Eine durch Kommas abgetrennte Liste mit Include/Exclude-Tags (s. Tabelle unten), in der auf die Abhängigkeit verwiesen wird, die in das endgültige Paket eingefügt werden soll.A comma-delimited list of include/exclude tags (see below) indicating of the dependency to include in the final package. Standardwert: all.The default value is all.
ausschließenexclude Eine durch Kommas abgetrennte Liste mit Include/Exclude-Tags (s. Tabelle unten), in der auf die Abhängigkeit verwiesen wird, die nicht in das endgültige Paket eingefügt 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, der überschrieben werden kann.The default value is build,analyzers which can be over-written. content/ ContentFiles werden jedoch auch implizit im endgültigen Paket ausgeschlossen, das nicht überschrieben werden kann.But content/ ContentFiles are also implicitly excluded in the final package which can't be over-written. exclude-Tags haben Vorrang gegenüber include-Tags.Tags specified with exclude take precedence over those specified with include. Beispielsweise entspricht include="runtime, compile" exclude="compile"``include="runtime".For example, include="runtime, compile" exclude="compile" is the same as include="runtime".
Include/Exclude-TagInclude/Exclude tag Betroffene Ordner im ZielAffected folders of the target
contentFilescontentFiles InhaltContent
Laufzeitruntime Runtime, Ressourcen und FrameworkassemblysRuntime, Resources, and FrameworkAssemblies
Kompilierencompile liblib
buildbuild Build (MSBuild-Eigenschaften und -Ziele)build (MSBuild props and targets)
Systemeigennative Systemeigennative
nonenone Keine OrdnerNo folders
allall Alle OrdnerAll folders

Beispielsweise verweisen die folgenden Zeilen auf Abhängigkeiten auf 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 von PackageA sowie alle anderen Ordner bis auf native und compile von PackageB angegeben 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>

Wichtig

Beim Erstellen einer .nuspec aus einem Projekt mithilfe von nuget specwerden Abhängigkeiten, die in diesem Projekt vorhanden sind, nicht automatisch in die resultierende .nuspec Datei eingeschlossen.When creating a .nuspec from a project using nuget spec, dependencies that exist in that project are not automatically included in the resulting .nuspec file. Verwenden Sie stattdessen nuget pack myproject.csproj, und holen Sie sich die nuspec -Datei aus der generierten nupkg -Datei.Instead, use nuget pack myproject.csproj, and get the .nuspec file from within the generated .nupkg file. Diese . nuspec -Datei enthält die Abhängigkeiten.This .nuspec contains the dependencies.

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 angegeben werden, das <group>-Elemente in <dependencies> verwendet.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 entweder kein <dependency>-Element oder mindestens eins.Each group has an attribute named targetFramework and contains zero or more <dependency> elements. Diese Abhängigkeiten werden zusammen 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 Ausweichliste 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.

Hinweis

Das im lib/ref Ordner verwendete Format des zielframeworkmonikers (Target Framework Moniker, TFM) ist im Vergleich zum in dependency groupsverwendeten TFM anders.The format of Target Framework Moniker (TFM) used in lib/ref folder is different when compared to the TFM used in dependency groups. Wenn die Ziel Framework-Frameworks, die im dependencies group und im Ordner lib/ref der .nuspec Datei deklariert sind, nicht über exakte Übereinstimmungen verfügen, wird mit pack Befehl nuget Warning NU5128ausgegeben.If the target frameworks declared in the dependencies group and the lib/ref folder of .nuspec file do not have exact matches then pack command will raise NuGet Warning NU5128.

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=".NETFramework4.7.2">
        <dependency id="jQuery" version="1.6.2" />
        <dependency id="WebActivator" version="1.4.4" />
    </group>

    <group targetFramework="netcoreapp3.1">
    </group>
</dependencies>

Explizite AssemblyverweiseExplicit assembly references

Das <references>-Element wird von Projekten verwendet, die packages.config verwenden, um explizit die Assemblys anzugeben, auf die das Ziel Projekt bei Verwendung des Pakets verweisen soll.The <references> element is used by projects using packages.config to explicitly specify the assemblies that the target project should reference when using the package. In der Regel werden Verweise nur für Assemblys zur Entwurfszeit verwendet.Explicit references are typically used for design-time only assemblies. Weitere Informationen finden Sie auf der Seite zum Auswählen von Assemblys, auf die von-Projekten verwiesen wird.For more information, see the page on selecting assemblies referenced by projects for more information.

Beispielsweise gibt das folgende <references>-Element NuGet die Anweisung, Verweise nur zu xunit.dll und xunit.extensions.dll hinzuzufügen, wenn zusätzliche Assemblys in dem 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>

VerweisgruppenReference groups

Als Alternative zu einer einzelnen flachen Liste können Verweise auf der Grundlage des Frameworkprofils des Zielprojekts angegeben werden, das <group>-Elemente in <references> verwendet.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 mit dem Namen targetFramework und enthält entweder kein <reference>-Element oder mindestens eins.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 ein targetFramework-Attribut wird als Standard- oder Ausweichliste der 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. Pakete können sicherstellen, dass die erforderlichen Verweise, falls nötig, dem Projekt hinzugefügt werden, indem es diese Assemblys im <frameworkAssemblies>-Element erkennt.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. Solche Assemblys sind nicht von Anfang an in Paketen enthalten.Such assemblies, of course, are not included in a package directly.

Das <frameworkAssemblies>-Element enthält entweder kein <frameworkAssembly>-Element oder mindestens eins, das die folgenden Attribute angibt:The <frameworkAssemblies> element contains zero or more <frameworkAssembly> elements, each of which specifies the following attributes:

attributeAttribute BESCHREIBUNGDescription
assemblyNameassemblyName (Erforderlich) Der vollqualifizierte 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. Wenn dieses Attribut nicht vorhanden ist, deutet dies darauf hin, dass sich der Verweis auf alle Frameworks bezieht.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.

Im folgenden Beispiel werden Verweise auf System.Net für alle Zielframeworks und auf System.ServiceModel für ausschließlich .NET Framework 4.0 dargestellt: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>

Einfügen von AssemblydateienIncluding assembly files

Wenn Sie die unter Creating a Package (Erstellen eines Pakets) beschriebenen Anweisungen ausführen, 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 automatisch der DLL des Pakets Assemblyverweise hinzu. Die Verweise, die mit benannt sind werden dabei allerdingsnicht.resources.dll 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.

Legen Sie ein <files>-Element als untergeordnetes Element von <package> und als gleichgeordnetes Element von <metadata> fest, das jeder Datei ein separates <file>-Element zuordnet, um diese automatischen Vorgänge zu umgehen und genau zu kontrollieren, welche Dateien in einem Paket enthalten sind.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. 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 packages.config-Element wird bei NuGet 2.x und früher sowie bei Projekten, die <files> verwenden, außerdem verwendet, um unveränderliche Inhaltsdateien während der Paketinstallation einzufügen.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. Bei NuGet 3.3 und höher und 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 Einfügen 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:

attributeAttribute BESCHREIBUNGDescription
srcsrc Der Speicherort der Dateien, die eingefügt werden sollen, unterliegt Ausnahmen, die von dem exclude-Attribut angegeben werden.The location of the file or files to include, subject to exclusions specified by the exclude attribute. Der Pfad ist relativ zur .nuspec-Datei, wenn 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 zweifache Platzhalterzeichen ** impliziert eine rekursive Ordnersuche.The wildcard character * is allowed, and the double wildcard ** implies a recursive folder search.
Zieltarget Der relative Pfad zu dem Ordner in dem Paket, in dem die Quelldateien platziert sind, der mit lib, content, build oder tools beginnt.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 dazu finden Sie unter Creating a .nuspec from a convention-based working directory (Erstellen einer NUSPEC-Datei aus einem auf Konventionen basierenden Arbeitsverzeichnis).See Creating a .nuspec from a convention-based working directory.
excludeexclude Eine durch Semikolons abgetrennte Datei oder Dateimuster, die sich nicht im src-Speicherort befinden dürfen.A semicolon-delimited list of files or file patterns to exclude from the src location. Das Platzhalterzeichen * ist zulässig, und das zweifache 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, die Platzhalterzeichen verwendenSet 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)

Einfügen von InhaltsdateienIncluding content files

Bei Inhaltsdateien handelt es sich um unveränderliche Dateien, die ein Paket in ein Projekt einfügen muss.Content files are immutable files that a package needs to include in a project. Da sie unveränderlich sind, sollen 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
  • Quelldateien, die bereits kompiliert sindSource files that are already compiled
  • Skripts, die in die Buildausgabe des Projekts eingefügt 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 eingefügt werden müssen, an denen jedoch keine projektspezifischen Änderungen vorgenommen werden müssen.Configuration files for the package that need to be included in the project but don't need any project-specific changes

Inhaltsdateien werden in ein Paket eingefügt, das das <files>-Element verwendet, das den content-Ordner im target-Attribut angibt.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 über PackageReference in ein 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öchstmögliches Maß 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 content als Basisordner im target-Attribut an, wie in den folgenden Beispielen dargestellt wird.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, die für ein Zielframework spezifisch istContent 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 dieses Bestandteil des Namens in target als einen 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 einzufügen: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 tiefen Pfaden und tiefen 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 platzieren Pakete Inhalte in einem contentFiles-Ordner (s. unten), in den nuget pack alle Dateien mithilfe von Standardattributen eingefügt 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 nicht notwendig, einen contentFiles-Knoten in .nuspec einzufügen.In this case it's not necessary to include a contentFiles node in the .nuspec at all.

Das <contentFiles>-Element gibt eine Auflistung von <files>-Elementen an, die die eingefügten Dateien erkennen, um zu kontrollieren, welche Dateien eingefügt wurden.To control which files are included, the <contentFiles> element specifies is a collection of <files> elements that identify the exact files include.

Diese Dateien werden zusammen mit mehreren Attributen angegeben, die beschreiben, wie sie in dem Projektsystem verwendet werden sollen:These files are specified with a set of attributes that describe how they should be used within the project system:

attributeAttribute BESCHREIBUNGDescription
includeinclude (Erforderlich) Der Speicherort der Dateien, die eingefügt werden sollen, unterliegt Ausnahmen, die von dem exclude-Attribut angegeben werden.(Required) The location of the file or files to include, subject to exclusions specified by the exclude attribute. Der Pfad ist relativ zum contentFiles Ordner, es sei denn, es wurde ein absoluter Pfad angegeben.The path is relative to the contentFiles folder unless an absolute path is specified. Das Platzhalterzeichen * ist zulässig, und das zweifache Platzhalterzeichen ** impliziert eine rekursive Ordnersuche.The wildcard character * is allowed, and the double wildcard ** implies a recursive folder search.
excludeexclude Eine durch Semikolons abgetrennte Datei oder Dateimuster, die sich nicht im src-Speicherort befinden dürfen.A semicolon-delimited list of files or file patterns to exclude from the src location. Das Platzhalterzeichen * ist zulässig, und das zweifache Platzhalterzeichen ** impliziert eine rekursive Ordnersuche.The wildcard character * is allowed, and the double wildcard ** implies a recursive folder search.
buildActionbuildAction Die Buildaktion, die dem Inhalts Element für MSBuild zugewiesen werden soll, z. b. Content, None, Embedded Resource, Compileusw. Der Standardwert 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. Die Standardeinstellung ist „false“.The default is false.
flattenflatten Ein boolescher Wert, der angibt, ob Inhaltselemente in einen Ordner in der Buildausgabe kopiert werden sollen (TRUE) oder ob 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). Diese Flag funktioniert nur, wenn das copyToOutput-Flag auf TRUE festgelegt ist.This flag only works when copyToOutput flag is set to true. Die Standardeinstellung ist „false“.The default is false.

NuGet wendet die untergeordneten Elemente von <contentFiles> bei der Installation eines Pakets von unten nach oben an.When installing a package, NuGet applies the child elements of <contentFiles> from top to bottom. Wenn mehrere Einträge in einer Datei vorhanden sind, werden sie alle angewendet.If multiple entries match the same file then all entries are applied. Der höher geordnete Eintrag setzt die untergeordneten Einträge außer Kraft, wenn ein Konflikt für ein Attribut entsteht.The top-most entry overrides the lower entries if there is a conflict for the same attribute.

PaketordnerstrukturPackage folder structure

Das Paketprojekt sollte Inhalte mithilfe 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, der NuGet unterstützt (Informationen dazu finden Sie unter Zielframeworks).TxM is any legal target framework moniker that NuGet supports (see Target frameworks).
  • An das Ende der Syntax kann eine beliebige Ordnerstruktur angehängt werden.Any folder structure may be appended to the end of this syntax.

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. Z.B.: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/.

Beispiel: Abschnitt „contentFiles“Example contentFiles section

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        ...
        <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>
        </metadata>
</package>

Framework-Verweis GruppenFramework reference groups

Nur Version 5.1 + voranstellen packagereferenzierungVersion 5.1+ wih PackageReference only

Frameworkverweise sind ein .net Core-Konzept, das freigegebene Frameworks wie WPF oder Windows Forms darstellt.Framework References are a .NET Core concept representing shared frameworks such as WPF or Windows Forms. Durch die Angabe eines freigegebenen Frameworks stellt das Paket sicher, dass alle frameworkabhängigkeiten im verweisenden Projekt enthalten sind.By specifying a shared framework, the package ensures that all its framework dependencies are included in the referencing project.

Jedes <group> Element erfordert ein targetFramework Attribut und 0 (null) oder mehr <frameworkReference> Elemente.Each <group> element requires a targetFramework attribute and zero or more <frameworkReference> elements.

Das folgende Beispiel zeigt eine nuspec, die für ein .net Core-WPF-Projekt generiert wurde.The following example shows a nuspec generated for a .NET Core WPF project. Beachten Sie, dass das manuelle Erstellen von nuspecs, die frameworkverweise enthalten, nicht empfohlen wird.Note that hand authoring nuspecs that contain framework references is not recommended. Ziehen Sie stattdessen die Verwendung des Targets -Pakets in Erwägung, das automatisch aus dem Projekt abgeleitet wird.Consider using the targets pack instead, which will automatically infer them from the project.

<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <dependencies>
      <group targetFramework=".NETCoreApp3.1" />
    </dependencies>
    <frameworkReferences>
      <group targetFramework=".NETCoreApp3.1">
        <frameworkReference name="Microsoft.WindowsDesktop.App.WPF" />
      </group>
    </frameworkReferences>
  </metadata>
</package>

NUSPEC-BeispieldateienExample nuspec files

Eine 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>

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

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

Eine .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
  • WindowsPhone: Microsoft.Devices.SensorsWindowsPhone -> Microsoft.Devices.Sensors