En este post vamos a crear un paquete NuGet y publicarlo.

NuGets

Un paquete NuGet es un archivo ZIP con la extensión .nupkg que contiene código compilado (como un DLL), otros archivos relacionados con ese código y un manifiesto descriptivo que incluye información como la funcionalidad o el número de versión del paquete. Al fin y al cabo, un NuGet es una librería con un conjunto de clases.

Un NuGet puede tener dependencias, que serían otros NuGets que agregamos a nuestro proyecto en realidad. Esas dependencias van en cascada, por lo que al agregar nuestro NuGet en cliente tendríamos todas las funcionalidades tanto de nuestro NuGet como de sus dependencias.

Crear un paquete Nuget (ejemplo)

En la primera parte del ejemplo vamos a crear un paquete NuGet muy sencillo con un par de clases y después lo publicaremos; posteriormente lo modificaremos para que tenga dependencia de otros NuGets.

Lo primero que necesitamos es descargarnos la herramienta oficial de NuGet para trabajar.

nuget.exe

Descargamos la versión más actual, en mi caso la 5.8.1. Se descarga un archivo .exe que deberemos copiar a C:\Windows\System32. Podemos comprobar mediante la consola de comandos si todo ha ido bien:

C:\
λ nuget
NuGet Version: 5.8.1.7021

Y también necesitamos darnos de alta en nuget.org con una cuenta Microsoft para poder publicar nuestros NuGets.


Proyecto de clases

Empezamos creando un nuevo proyecto de Class Library de .Net Core que yo lo llamaré NuGetModels, por ejemplo.

ClassLibraryNetCore

Añadiré una carpeta Models para meter ahí mis dos clases que actuarán como modelos: Persona y Mascota. Clases sencillas con 4 propiedades simplemente. También vamos a añadir una imagen al proyecto simplemente para poder usarla como imagen del paquete nuget.

Persona
Mascota
SolutionExplorer

Una vez que tenemos nuestra librería de clases lista, vamos a proceder a publicarlo. Para ello necesitamos acceder a nuestra cuenta de nuget.org para crear una clave (API Key), porque nos servirá para poder publicar nuestros paquetes NuGet. Creamos una nueva, con el nombre y la duración que queramos. Añadimos un asterisco en Glob Pattern para que la clave nos sirva para todos los paquetes que queramos publicar y creamos.

ApiKey

Una vez creada nos dice que copiemos la clave, ya que posteriormente no se podrá recuperar. Debemos guardarla en un fichero para tenerla accesible siempre que queramos publicar un paquete o una modificación de alguno ya existente.

KeyNuGets

Publicación

Para publicar el paquete primero ponemos el proyecto en modo release y hacemos un rebuild para comprobar que todo está bien y no hay errores.

release
rebuild

Después, hacemos click derecho en el proyecto, le damos a properties y vamos a la pestaña de package. Aquí pondremos toda la información del paquete a publicar. Hay campos que no son necesarios y dependen del tipo de paquete que se quiera crear. Nosotros vamos a dejarlo público para todo el mundo, por lo que no añadiremos ni copyright ni licencias.

package

Una vez rellenado y listo para publicar, guardamos, damos click derecho sobre el proyecto y seleccionamos pack.

pack

Así nos genera el archivo .nupkg
Abajo en la consola nos aparece la ruta exacta del archivo, ruta que también necesitamos, como las claves, para poder subirlo.

consolaPack

El último paso que nos queda es escribir un comando específico en la consola para poder publicarlo. Primero debemos situarnos donde se encuentre el archivo .nupkg, en nuestro ejemplo: ‘G:\Repos\NuGetModels\NuGetModels\bin\Release’.

El comando es el siguiente, cambiando archivo.nupkg y KEY por los nuestros:

nuget push archivo.nupkg KEY -source https://api.nuget.org/v3/index.json
nugetpush

Ya está el paquete publicado. Ya solo queda esperar a visualizarlo en la página oficial y comprobar que está disponible.

nugetsubido
nugetdisponible

Dependencias

Ahora pasamos a la segunda parte del ejemplo práctico, porque vamos a añadir dependencias a nuestro paquete NuGet.

Para este ejemplo vamos a incluir el NuGet System.ComponentModel.Annotations para poder mapear nuestras clases y enlazarlas posteriormente en cliente con una base de datos.

SystemComponentAnotations

Las clases se quedarían así después de escribir las anotaciones.

PersonaMapeada
MascotaMapeada

Una vez realizados nuestros cambios, seguiremos los mismos pasos:

Teniendo el proyecto en Release, hacemos un rebuild y en properties modificamos lo que consideremos además del número de versión.

package2

Ahora click derecho sobre el proyecto y seleccionamos Pack para que nos genere el nuevo archivo .nupkg

consolaPack2

Y por último volvemos a ejecutar el comando en la consola, situados en la ubicación del archivo .nupkg generado, y cambiando en nombre del archivo por el nuevo.

nugetpush2

Y comprobamos que está visible en la página oficial y en Visual Studio

nugetsubido2
nugetdisponible2

Espero que este post te haya servido para empezar a crear tus propios paquetes NuGet y que no hayas tenido ningún problema para seguirlo 🙂

En el enlace a mi código de Git está el proyecto final.

Autora: Nazaret de la Calle Miján
Curso: Desarrollo Web Full Stack, MultiCloud y Multiplataforma
Centro: Tajamar
Año académico: 2020-2021
Código de GitHub: NuGetModels
LinkedIn: Mi Perfil

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.