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
- Erstellen von Symbolpaketen (.snupkg) – das neue empfohlene Format für Symbolpakete