Création de packages de symboles hérité (.symbols.nukpg)

Important

Le nouveau format recommandé pour les packages de symboles est .snupkg. Consultez Création de packages de symboles (.snupkg).
.symbols.nupkg est toujours pris en charge, mais uniquement pour des raisons de compatibilité.

En plus de générer des packages pour nuget.org et d’autres sources, NuGet prend en charge la création de packages de symboles associés qui peuvent être publiés sur les serveurs de symboles.

Création de packages de symboles hérité

Pour créer un package de symboles hérité, respectez les conventions suivantes :

  • Nommez le package principal (avec votre code) {identifier}.nupkg et incluez tous vos fichiers à l’exception des fichiers .pdb.
  • Nommez le package de symboles hérité {identifier}.symbols.nupkg et incluez la DLL de votre assembly, vos fichiers .pdb, vos fichiers XMLDOC, vos fichiers sources (consultez les sections qui suivent).

Vous pouvez créer les deux packages avec l’option -Symbols, soit à partir d’un fichier .nuspec, soit un fichier de projet :

nuget pack MyPackage.nuspec -Symbols

nuget pack MyProject.csproj -Symbols

Notez que pack requiert Mono 4.4.2 sur Mac OS X et ne fonctionne pas sur les systèmes Linux. Sur un Mac, vous devez également convertir les chemins d’accès Windows dans le fichier .nuspec en chemins d’accès de style Unix.

Structure des packages de symboles hérités

Un package de symboles hérité peut cibler plusieurs versions cibles du .Net Framework de la même façon qu’un package de bibliothèque, si bien que la structure du dossier lib doit être exactement la même que celle du package principal, en incluant uniquement les fichiers .pdb avec la DLL.

Par exemple, un package de symboles hérité ciblant le .NET 4.0 et Silverlight 4 aurait cette disposition :

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

Les fichiers sources sont alors placés dans un dossier spécial distinct nommé src, qui doit suivre la structure relative de votre dépôt de code source. En effet, les fichiers PDB contiennent des chemins absolus aux fichiers sources utilisés pour compiler la DLL correspondante et doivent être détectés pendant le processus de publication. Un chemin d’accès de base (préfixe de chemin commun) peut être supprimé. Par exemple, créez une bibliothèque générée à partir de ces fichiers :

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)

À part le dossier lib, un package de symboles hérité doit contenir cette disposition :

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

Référence à des fichiers dans le fichier nuspec

Un package de symboles hérité peut être généré par des conventions, à partir d’une structure de dossiers comme décrit dans la section précédente, ou en spécifiant son contenu dans la section files du manifeste. Par exemple, pour générer le package indiqué dans la section précédente, utilisez les éléments suivants dans le fichier .nuspec :

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

Voir aussi