Creación de un paquete NuGet con la CLI de .NET

Nota

A continuación se muestran ejemplos de línea de comandos mediante Unix. El comando dotnet pack, tal como se muestra aquí, funciona del mismo modo en Windows.

Está previsto que las bibliotecas .NET Standard y .NET Core se distribuyan como paquetes NuGet. De hecho, es así como se distribuyen y consumen todas las bibliotecas estándar .NET. Esto se hace más fácil con el comando dotnet pack.

Imagine que acaba de escribir una nueva biblioteca sorprendente que quiere distribuir a través de NuGet. Puede crear un paquete NuGet con herramientas multiplataforma para hacer exactamente eso. En el ejemplo siguiente, hay una biblioteca denominada SuperAwesomeLibrary con destino a netstandard1.0.

Si tiene dependencias transitivas; es decir, un proyecto que depende de otro paquete, asegúrese de restaurar los paquetes para toda la solución con el comando dotnet restore antes de crear un paquete NuGet. Si no lo hace, el comando dotnet pack no funcionará correctamente.

No es necesario ejecutar dotnet restore porque lo ejecutan implícitamente todos los comandos que necesitan que se produzca una restauración, como dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish y dotnet pack. Para deshabilitar la restauración implícita, use la opción --no-restore.

El comando dotnet restore sigue siendo válido en algunos escenarios donde tiene sentido realizar una restauración explícita, como las compilaciones de integración continua en Azure DevOps Services o en los sistemas de compilación que necesitan controlar explícitamente cuándo se produce la restauración.

Para obtener información sobre cómo administrar fuentes de NuGet, vea la documentación de dotnet restore.

Después de asegurarse de que se restauran los paquetes, puede ir hasta el directorio donde reside una biblioteca:

cd src/SuperAwesomeLibrary

Luego, es solo cuestión de un comando desde la línea de comandos:

dotnet pack

La carpeta /bin/Debug tendrá un aspecto similar al siguiente:

$ ls bin/Debug
netstandard1.0/
SuperAwesomeLibrary.1.0.0.nupkg
SuperAwesomeLibrary.1.0.0.symbols.nupkg

Esto genera un paquete que se puede depurar. Si quiere compilar un paquete NuGet con archivos binarios de versión comercial, todo lo que tiene que hacer es agregar el modificador --configuration (o-c) y usar release como argumento.

dotnet pack --configuration release

La carpeta /bin tendrá ahora una carpeta versión que contiene el paquete NuGet con archivos binarios de versión:

$ ls bin/release
netstandard1.0/
SuperAwesomeLibrary.1.0.0.nupkg
SuperAwesomeLibrary.1.0.0.symbols.nupkg

Y ahora tiene los archivos necesarios para publicar un paquete de NuGet.

dotnet packNo confunda dotnet publish con

Es importante tener en cuenta que en ningún momento participa el comando dotnet publish. El comando dotnet publish se destina a la implementación de aplicaciones con todas sus dependencias en el mismo conjunto, no a la generación de un paquete NuGet que se distribuya y consuma a través de NuGet.

Vea también