Erstellen von Legacysymbolpaketen (.symbols.nupkg)Creating legacy symbol packages (.symbols.nupkg)

Wichtig

Das neue empfohlene Format für Symbolpakete ist „.snupkg“.The new recommended format for symbol packages is .snupkg. Weitere Informationen finden Sie unter Erstellen von Symbolpaketen (.snupkg).See Creating symbol packages (.snupkg).
Das Format „.symbols.nupkg“ wird aus Kompatibilitätsgründen noch immer unterstützt..symbols.nupkg is still supported but only for compatibility reasons.

Neben der Erstellung von Paketen für nuget.org oder andere Quellen unterstützt NuGet auch die Erstellung zugehöriger Symbolpakete, die auf Symbolservern veröffentlicht werden können.In addition to building packages for nuget.org or other sources, NuGet also supports creating associated symbol packages that can be published to symbol servers. Das Legacyformat für Symbolpakete – .symbols.nupkg – kann per Pushübertragung an das SymbolSource-Repository übermittelt werden.The legacy symbol package format, .symbols.nupkg, can be pushed to the SymbolSource repository.

Paketverbraucher können anschließend https://nuget.smbsrc.net zu ihren Symbolquellen in Visual Studio hinzufügen, wodurch Paketcode im Visual Studio Debugger schrittweise verwendet werden kann.Package consumers can then add https://nuget.smbsrc.net to their symbol sources in Visual Studio, which allows stepping into package code in the Visual Studio debugger. Weitere Einzelheiten zu diesem Prozess finden Sie unter Angeben von Symbol- (PDB) und Quelldateien im Visual Studio Debugger.See Specify symbol (.pdb) and source files in the Visual Studio debugger for details on that process.

Erstellen eines LegacysymbolpaketsCreating a legacy symbol package

Folgen Sie diesen Konventionen, wenn Sie ein Legacysymbolpaket erstellen:To create a legacy symbol package, follow these conventions:

  • Geben Sie dem Primärpaket (mit Ihrem Code) den Namen {identifier}.nupkg, und schließen Sie alle Dateien außer .pdb ein.Name the primary package (with your code) {identifier}.nupkg and include all your files except .pdb files.
  • Geben Sie dem Symbolpaket den Namen {identifier}.symbols.nupkg, und schließen Sie Ihre Assembly-DLL, .pdb-Dateien, XMLDOC-Dateien und Quelldateien ein (siehe die folgenden Abschnitte).Name the legacy symbol package {identifier}.symbols.nupkg and include your assembly DLL, .pdb files, XMLDOC files, source files (see the sections that follow).

Sie können beide Pakete mit der Option -Symbols aus einer .nuspec-Datei oder einer Projektdatei erstellen:You can create both packages with the -Symbols option, either from a .nuspec file or a project file:

nuget pack MyPackage.nuspec -Symbols

nuget pack MyProject.csproj -Symbols

Beachten Sie, dass für pack Mono 4.4.2 unter Mac OS X erforderlich ist und dass dieser Befehl auf Linux-Systemen nicht funktioniert.Note that pack requires Mono 4.4.2 on Mac OS X and does not work on Linux systems. Auf einem Mac müssen Sie ebenfalls Windows-Pfadnamen in der .nuspec-Datei in Pfade im Unix-Format konvertieren.On a Mac, you must also convert Windows pathnames in the .nuspec file to Unix-style paths.

Struktur von LegacysymbolpaketenLegacy symbol package structure

Ein Symbolpaket kann für mehrere Zielframeworks verwendet werden, genau wie ein Bibliothekspaket. Die Struktur des Ordners lib muss demnach mit dem primären Paket identisch sein und darf neben der DLL lediglich .pdb-Dateien enthalten.A legacy symbol package can target multiple target frameworks in the same way that a library package does, so the structure of the lib folder should be exactly the same as the primary package, only including .pdb files alongside the DLL.

Ein Legacysymbolpaket für .NET 4.0 und Silverlight 4 würde beispielsweise folgendes Layout aufweisen:For example, a legacy symbol package that targets .NET 4.0 and Silverlight 4 would have this layout:

\lib
    \net40
        \MyAssembly.dll
        \MyAssembly.pdb
    \sl40
        \MyAssembly.dll
        \MyAssembly.pdb

Quelldateien werden dann in einem separaten speziellen Ordner mit dem Namen src angeordnet. Dabei muss die relative Struktur Ihres Quellrepositorys eingehalten werden.Source files are then placed in a separate special folder named src, which must follow the relative structure of your source repository. Grund dafür ist, dass PDB-Dateien absolute Pfade zu Quelldateien für die Kompilierung der entsprechenden DLL enthalten und diese während des Veröffentlichungsprozesses gefunden werden müssen.This is because PDBs contain absolute paths to source files used to compile the matching DLL, and they need to be found during the publishing process. Ein Basispfad (allgemeine Pfadpräfix) kann entfernt werden. Angenommen beispielsweise, eine Bibliothek wird aus folgenden Dateien erstellt:A base path (common path prefix) can be stripped out. For example, consider a library built from these files:

C:\Projects
    \MyProject
        \Common
            \MyClass.cs
        \Full
            \Properties
                \AssemblyInfo.cs
            \MyAssembly.csproj (producing \lib\net40\MyAssembly.dll)
        \Silverlight
            \Properties
                \AssemblyInfo.cs
            \MySilverlightExtensions.cs
            \MyAssembly.csproj (producing \lib\sl4\MyAssembly.dll)

Neben dem Ordner lib muss ein Legacysymbolpaket dann folgendes Layout enthalten:Apart from the lib folder, a legacy symbol package would need to contain this layout:

\src
    \Common
        \MyClass.cs
    \Full
        \Properties
            \AssemblyInfo.cs
    \Silverlight
        \Properties
            \AssemblyInfo.cs
        \MySilverlightExtensions.cs

Verweisen auf Dateien in der NUSPEC-DateiReferring to files in the nuspec

Ein Legacysymbolpaket kann, wie im vorherigen Abschnitt beschrieben, gemäß Konventionen aus einer Ordnerstruktur oder durch Angabe der Inhalte im Abschnitt files des Manifests erstellt werden.A legacy symbol package can be built by conventions, from a folder structure as described in the previous section, or by specifying its contents in the files section of the manifest. Verwenden Sie für die Erstellung des im vorherigen Abschnitts angezeigten Pakets beispielsweise Folgendes in der .nuspec-Datei:For example, to build the package shown in the previous section, use the following in the .nuspec file:

<files>
    <file src="Full\bin\Debug\*.dll" target="lib\net40" />
    <file src="Full\bin\Debug\*.pdb" target="lib\net40" />
    <file src="Silverlight\bin\Debug\*.dll" target="lib\sl40" />
    <file src="Silverlight\bin\Debug\*.pdb" target="lib\sl40" />
    <file src="**\*.cs" target="src" />
</files>

Veröffentlichen eines LegacysymbolpaketsPublishing a legacy symbol package

Wichtig

Sie müssen nuget.exe v4.9.1 oder höher verwenden, um Pakete per Push an nuget.org übertragen zu können, da so die erforderlichen NuGet-Protokolle implementiert werden.To push packages to nuget.org you must use nuget.exe v4.9.1 or above, which implements the required NuGet protocols.

  1. Speichern Sie Ihren API-Schlüssel der Einfachheit halber zunächst mit NuGet (siehe Paket veröffentlichen). Dieser gilt dann für nuget.org und symbolsource.org, da symbolsource.org mit nuget.org überprüft, ob Sie der Paketbesitzer sind.For convenience, first save your API key with NuGet (see publish a package, which will apply to both nuget.org and symbolsource.org, because symbolsource.org will check with nuget.org to verify that you are the package owner.

    nuget SetApiKey Your-API-Key
    
  2. Nachdem Sie Ihr primäres Paket auf nuget.org veröffentlicht haben, übertragen Sie das Legacysymbolpaket wie folgt per Push, wobei symbolsource.org automatisch als Ziel verwendet wird, da .symbols im Dateinamen enthalten ist:After publishing your primary package to nuget.org, push the legacy symbol package as follows, which will automatically use symbolsource.org as the target because of the .symbols in the filename:

    nuget push MyPackage.symbols.nupkg
    
  3. Verwenden Sie die Option -Source, um ein Paket in einem anderen Symbolrepository zu veröffentlichen oder um ein Legacysymbolpaket per Push zu übertragen, das nicht den Namenskonventionen folgt:To publish to a different symbol repository, or to push a legacy symbol package that doesn't follow the naming convention, use the -Source option:

    nuget push MyPackage.symbols.nupkg -source https://nuget.smbsrc.net/
    
  4. Sie können auch das primäre Paket und Symbolpakete gleichzeitig mithilfe von Push in beide Repositorys übertragen, indem Sie Folgendes verwenden:You can also push both primary and symbol packages to both repositories at the same time using the following:

    nuget push MyPackage.nupkg
    

    Hinweis

    Bei nuget.exe 4.5.0 oder höher werden die Symbolpakete nicht automatisch mithilfe von Push auf symbolsource.org übertragen. Sie müssten die Symbolpakete separat mithilfe von Push übertragen, wie in den oben genannten Schritten beschrieben.With nuget.exe 4.5.0 or above, the symbols packages are not automatically pushed to symbolsource.org. You would need to push the symbols packages separately as explained in the earlier steps.

In diesem Fall veröffentlicht NuGet MyPackage.symbols.nupkg, falls vorhanden, auf https://nuget.smbsrc.net/ (die Push-URL für symbolsource.org), nachdem das primäre Paket auf nuget.org veröffentlicht wurde.In this case, NuGet will publish MyPackage.symbols.nupkg, if present, to https://nuget.smbsrc.net/ (the push URL for symbolsource.org), after it publishes the primary package to nuget.org.

Siehe auchSee also