Erstellen von Legacysymbolpaketen (.symbols.nupkg)

Wichtig

Das neue empfohlene Format für Symbolpakete ist „.snupkg“. Weitere Informationen finden Sie unter Erstellen von Symbolpaketen (.snupkg).
Das Format „.symbols.nupkg“ wird nur aus Kompatibilitätsgründen noch immer unterstützt.

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.

Erstellen eines Legacysymbolpakets

Folgen Sie diesen Konventionen, wenn Sie ein Legacysymbolpaket erstellen:

  • Geben Sie dem Primärpaket (mit Ihrem Code) den Namen {identifier}.nupkg, und schließen Sie alle Dateien außer .pdb ein.
  • 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).

Sie können beide Pakete mit der Option -Symbols aus einer .nuspec-Datei oder einer Projektdatei erstellen:

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. Auf einem Mac müssen Sie ebenfalls Windows-Pfadnamen in der .nuspec-Datei in Pfade im Unix-Format konvertieren.

Struktur von Legacysymbolpaketen

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.

Ein Legacysymbolpaket für .NET 4.0 und Silverlight 4 würde beispielsweise folgendes Layout aufweisen:

\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. 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. Ein Basispfad (allgemeines Pfadpräfix) kann entfernt werden. Sehen Sie sich beispielsweise eine Bibliothek an, die aus diesen Dateien erstellt wurde:

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:

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

Verweisen auf Dateien in der NUSPEC-Datei

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. Verwenden Sie für die Erstellung des im vorherigen Abschnitts angezeigten Pakets beispielsweise Folgendes in der .nuspec-Datei:

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

Weitere Informationen