Freigeben über


Erstellen von Legacy-Symbolpaketen (.symbols.nupkg)

Von Bedeutung

Das neue empfohlene Format für Symbolpakete ist .snupkg. Siehe Erstellen von Symbolpaketen (.snupkg).
.symbols.nupkg wird weiterhin unterstützt, aber nur aus Kompatibilitätsgründen.

Neben dem Erstellen von Paketen für nuget.org oder andere Quellen unterstützt NuGet auch das Erstellen zugeordneter Symbolpakete, die auf Symbolservern veröffentlicht werden können.

Erstellen eines Alt-Symbolpakets

Befolgen Sie die folgenden Konventionen, um ein Legacysymbolpaket zu erstellen:

  • Benennen Sie das primäre Paket (mit Ihrem Code), {identifier}.nupkg und schließen Sie alle Ihre Dateien mit Ausnahme von .pdb Dateien ein.
  • Benennen Sie das Legacysymbolpaket {identifier}.symbols.nupkg , und schließen Sie Ihre Assembly-DLL, .pdb Dateien, XMLDOC-Dateien, Quelldateien ein (siehe die folgenden Abschnitte).

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

nuget pack MyPackage.nuspec -Symbols

nuget pack MyProject.csproj -Symbols

Beachten Sie, dass pack Mono 4.4.2 unter Mac OS X erforderlich ist und auf Linux-Systemen nicht funktioniert. Auf einem Mac müssen Sie auch in der .nuspec Datei Windows-Pfadnamen in Unix-Pfade konvertieren.

Alt-Symbolpaket-Struktur

Ein Legacysymbolpaket kann auf die gleiche Weise auf mehrere Zielframeworks abzielen wie ein Bibliothekspaket, sodass die Struktur des lib Ordners genau mit dem primären Paket identisch sein sollte, nur einschließlich .pdb Dateien zusammen mit der DLL.

Ein Legacysymbolpaket, das auf .NET 4.0 und Silverlight 4 ausgerichtet ist, hätte z. B. dieses Layout:

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

Quelldateien werden dann in einem separaten speziellen Ordner namens srcplatziert, der der relativen Struktur Ihres Quell-Repositorys folgen muss. Dies liegt daran, dass PDBs absolute Pfade zu Quelldateien enthalten, die zum Kompilieren der entsprechenden DLL verwendet werden, und sie müssen während des Veröffentlichungsprozesses gefunden werden. Ein Basispfad (allgemeines Pfadpräfix) kann entfernt werden. Betrachten Sie beispielsweise eine Bibliothek, 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 lib Ordner müsste ein Legacy-Symbolpaket dieses Layout enthalten.

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

Verweisen auf Dateien in der Nuspec

Ein Legacysymbolpaket kann, wie im vorherigen Abschnitt beschrieben, nach Konventionen aus einer Ordnerstruktur erstellt werden oder durch Angeben des Inhalts im files-Abschnitt des Manifests. Wenn Sie beispielsweise das im vorherigen Abschnitt gezeigte Paket erstellen möchten, verwenden Sie 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>

Siehe auch