Crear paquetes de símbolos (heredado)Creating symbol packages (legacy)

Importante

El nuevo formato recomendado para paquetes de símbolos es .snupkg.The new recommended format for symbol packages is .snupkg. Vea Crear paquetes de símbolos (.snupkg).See Creating symbol packages (.snupkg).
.symbols.nupkg todavía se admite, pero solo por motivos de compatibilidad..symbols.nupkg is still supported but only for compatibility reasons.

Además de crear paquetes para nuget.org u otros orígenes, NuGet también admite la creación de paquetes de símbolos asociados y su publicación en el repositorio 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.

Los consumidores de paquetes pueden agregar https://nuget.smbsrc.net a sus orígenes de símbolos en Visual Studio, que permite entrar en el código del paquete en el depurador de 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. Vea Especificar archivos de código fuente y símbolos (.pdb) en el depurador de Visual Studio para obtener información detallada sobre ese proceso.See Specify symbol (.pdb) and source files in the Visual Studio debugger for details on that process.

Crear un paquete de símbolosCreating a symbol package

Para crear un paquete de símbolos, siga estas convenciones:To create a symbol package, follow these conventions:

  • Asigne al paquete principal (con el código) el nombre {identifier}.nupkg e incluya todos los archivos excepto los archivos .pdb.Name the primary package (with your code) {identifier}.nupkg and include all your files except .pdb files.
  • Asigne al paquete de símbolos el nombre {identifier}.symbols.nupkg e incluya los archivos DLL de ensamblado, los archivos .pdb, los archivos XMLDOC y los archivos de origen (vea las secciones siguientes).Name the symbol package {identifier}.symbols.nupkg and include your assembly DLL, .pdb files, XMLDOC files, source files (see the sections that follow).

Puede crear ambos paquetes con la opción -Symbols, ya sea desde un archivo .nuspec o desde un archivo de proyecto: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

Tenga en cuenta que pack requiere Mono 4.4.2 en Mac OS X y no funciona en los sistemas Linux.Note that pack requires Mono 4.4.2 on Mac OS X and does not work on Linux systems. En los equipos Mac, también debe convertir los nombres de las rutas de acceso de Windows del archivo .nuspec a las rutas de acceso de estilo Unix.On a Mac, you must also convert Windows pathnames in the .nuspec file to Unix-style paths.

Estructura del paquete de símbolosSymbol package structure

Un paquete de símbolos puede tener como destino varias plataformas de destino de la misma manera que un paquete de bibliotecas, por lo que la estructura de la carpeta lib debe ser exactamente igual que el paquete principal, incluyendo solo los archivos .pdb junto con los archivos 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.

Por ejemplo, un paquete de símbolos que tenga como destino .NET 4.0 y Silverlight 4 tendría este diseño: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

Los archivos de código fuente se colocan en una carpeta especial independiente denominada src, que debe seguir la estructura relativa del repositorio de origen.Source files are then placed in a separate special folder named src, which must follow the relative structure of your source repository. Esto es así porque los archivos PDB contienen rutas de acceso absolutas a los archivos de código fuente que se usan para compilar los archivos DLL correspondientes y se deben buscar durante el proceso de publicación.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. Se puede quitar una ruta de acceso base (prefijo de ruta de acceso común). Por ejemplo, imagínese que tiene una biblioteca creada a partir de estos archivos: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)

Aparte de la carpeta lib, un paquete de símbolos tendría que tener este diseño: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

Hacer referencia a los archivos en el archivo nuspecReferring to files in the nuspec

Se puede crear un paquete de símbolos mediante convenciones a partir de una estructura de carpetas, tal y como se describe en la sección anterior, o especificando su contenido en la sección files del manifiesto.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. Por ejemplo, para crear el paquete que se muestra en la sección anterior, use lo siguiente en el archivo .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>

Publicar un paquete de símbolosPublishing a symbol package

Importante

Para insertar paquetes en nuget.org debe usar la versión 4.9.1 o una versión posterior de nuget.exe, que implementa los protocolos de NuGet necesarios.To push packages to nuget.org you must use nuget.exe v4.9.1 or above, which implements the required NuGet protocols.

  1. Para mayor comodidad, guarde primero la clave de API con NuGet (vea Publish a package [Publicar un paquete]), que se aplicará a nuget.org y a symbolsource.org, porque symbolsource.org comprobará con nuget.org que usted es el propietario del paquete.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. Una vez publicado el paquete principal en nuget.org, inserte el paquete de símbolos del siguiente modo. El paquete usará automáticamente symbolsource.org como destino debido a la aparición de .symbols en el nombre de archivo: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. Para publicar el paquete en otro repositorio de símbolos, o para insertar un paquete de símbolos que no sigue la convención de nomenclatura, use la opción -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. También puede insertar el paquete principal y el paquete de símbolos en ambos repositorios a la vez usando lo siguiente:You can also push both primary and symbol packages to both repositories at the same time using the following:

    nuget push MyPackage.nupkg
    

    Nota

    Con la versión 4.5.0 o una versión posterior de nuget.exe, los paquetes de símbolos no se insertan automáticamente en symbolsource.org. Tendría que insertar los paquetes de símbolos por separado, tal como se describe en el paso siguiente.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.

En este caso, NuGet publicará MyPackage.symbols.nupkg, si existe, en https://nuget.smbsrc.net/ (la dirección URL de inserción para symbolsource.org) después de que haya publicado el paquete principal en 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.

Vea tambiénSee Also

Moving to the new SymbolSource engine (Cambio al nuevo motor SymbolSource) (symbolsource.org)Moving to the new SymbolSource engine (symbolsource.org)