Création de packages de symboles (hérité)Creating symbol packages (legacy)

Important

Le nouveau format recommandé pour les packages de symboles est .snupkg.The new recommended format for symbol packages is .snupkg. Consultez Création de packages de symboles (.snupkg).See Creating symbol packages (.snupkg).
.symbols.nupkg est toujours pris en charge, mais uniquement pour des raisons de compatibilité..symbols.nupkg is still supported but only for compatibility reasons.

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 et leur publication dans le référentiel SymbolSource.In addition to building packages for nuget.org or other sources, NuGet also supports creating associated symbol packages and publishing them to the SymbolSource repository.

Les consommateurs de packages peuvent alors ajouter https://nuget.smbsrc.net à leurs sources de symbole dans Visual Studio, ce qui permet d’exécuter pas à pas le code du package dans le débogueur Visual Studio.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. Pour plus d’informations sur ce processus, consultez Spécifier les fichiers de symboles (.pdb) et les fichiers sources dans le débogueur Visual Studio.See Specify symbol (.pdb) and source files in the Visual Studio debugger for details on that process.

Création d’un package de symbolesCreating a symbol package

Pour créer un package de symboles, respectez les conventions suivantes :To create a symbol package, follow these conventions:

  • Nommez le package principal (avec votre code) {identifier}.nupkg et incluez tous vos fichiers à l’exception des fichiers .pdb.Name the primary package (with your code) {identifier}.nupkg and include all your files except .pdb files.
  • Nommez le package de symboles {identifier}.symbols.nupkg et incluez la DLL de votre assembly, vos fichiers .pdb, vos fichiers XMLDOC, vos fichiers sources (consultez les sections qui suivent).Name the symbol package {identifier}.symbols.nupkg and include your assembly DLL, .pdb files, XMLDOC files, source files (see the sections that follow).

Vous pouvez créer les deux packages avec l’option -Symbols, soit à partir d’un fichier .nuspec, soit un fichier de projet :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

Notez que pack nécessite Mono 4.4.2 sur Mac OS X et ne fonctionne pas sur les systèmes Linux.Note that pack requires Mono 4.4.2 on Mac OS X and does not work on Linux systems. Sur un Mac, vous devez également convertir les chemins Windows dans le fichier .nuspec en chemins de style Unix.On a Mac, you must also convert Windows pathnames in the .nuspec file to Unix-style paths.

Structure des packages de symbolesSymbol package structure

Un package de symboles 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.A 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.

Par exemple, un package de symboles ciblant le .NET 4.0 et Silverlight 4 aurait cette disposition :For example, a 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

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.Source files are then placed in a separate special folder named src, which must follow the relative structure of your source repository. 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.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. Un chemin de base (préfixe de chemin commun) peut être supprimé. Par exemple, considérez une bibliothèque créée à partir de ces fichiers :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)

À part le dossier lib, un package de symboles doit contenir cette disposition :Apart from the lib folder, a symbol package would need to contain this layout:

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

Référence à des fichiers dans le fichier nuspecReferring to files in the nuspec

Un package de symboles 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.A 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. Par exemple, pour générer le package indiqué dans la section précédente, utilisez les éléments suivants dans le fichier .nuspec :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>

Publication d’un package de symbolesPublishing a symbol package

Important

Pour envoyer (push) des packages à nuget.org, vous devez utiliser nuget.exe v4.9.1 ou plus, qui implémente les protocoles NuGet requis.To push packages to nuget.org you must use nuget.exe v4.9.1 or above, which implements the required NuGet protocols.

  1. Pour des raisons pratiques, commencez par enregistrer votre clé API auprès de NuGet (consultez Publier un package, ce qui s’applique à nuget.org et symbolsource.org, étant donné que symbolsource.org vérifie auprès de nuget.org que vous êtes le propriétaire du package).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. Après avoir publié votre package principal sur nuget.org, envoyez le package de symboles de la manière suivante, ce qui permet d’utiliser automatiquement symbolsource.org en tant que cible puisque le nom de fichier contient .symbols :After publishing your primary package to nuget.org, push the 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. Pour publier sur un dépôt de symboles différent ou envoyer un package de symboles qui ne respecte pas les conventions de nommage, utilisez l’option -Source :To publish to a different symbol repository, or to push a symbol package that doesn't follow the naming convention, use the -Source option:

    nuget push MyPackage.symbols.nupkg -source https://nuget.smbsrc.net/
    
  4. Vous pouvez également envoyer les packages principaux et de symboles aux deux dépôts en même temps en utilisant ce qui suit :You can also push both primary and symbol packages to both repositories at the same time using the following:

    nuget push MyPackage.nupkg
    

    Notes

    Avec nuget.exe 4.5.0 ou ultérieur, les packages de symboles ne sont pas automatiquement envoyés à symbolsource.org. Vous devez envoyer les packages de symboles séparément, comme expliqué dans l’étape suivante.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 next step.

Dans ce cas, NuGet publie MyPackage.symbols.nupkg, le cas échéant, sur https://nuget.smbsrc.net/ (URL push pour symbolsource.org), après avoir publié le package principal sur nuget.org.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.

Voir aussiSee Also

Passer au nouveau moteur SymbolSource (symbolsource.org)Moving to the new SymbolSource engine (symbolsource.org)