Creación de NuGets con y sin dependencias en .Net Core
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.
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.
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.
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.
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.
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.
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.
Una vez rellenado y listo para publicar, guardamos, damos click derecho sobre el proyecto y seleccionamos 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.
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
Ya está el paquete publicado. Ya solo queda esperar a visualizarlo en la página oficial y comprobar que está disponible.
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.
Las clases se quedarían así después de escribir las anotaciones.
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.
Ahora click derecho sobre el proyecto y seleccionamos Pack para que nos genere el nuevo archivo .nupkg
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.
Y comprobamos que está visible en la página oficial y en Visual Studio
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