Compartiendo con nuget

  • net-core

Desde un punto de vista sencillo, un paquete NuGet es un archivo ZIP con la extensión .nupkg que contiene código compilado (archivos DLL), otros archivos relacionados con ese código y un manifiesto descriptivo que incluye información como el número de versión del paquete.

Los programadores que desean compartir su código, pueden hacerlo creando este tipo de paquetes y publicándolos. Estos paquetes pueden ser alojados en un host público o privado, de esta manera, se puede limitar los destinatarios de un paquete. Así, se pueden crear paquetes visibles al mundo entero o, solamente, a tu organización. 

Para utilizar un paquete, simplemente hay que obtenerlo del host adecuado, agregarlo al proyecto y llamar a la funcionalidad de dicho paquete. Desde el propio visual studio se pueden controlar todos los detalles a la hora de trabajar con estos paquetes.

En este post, lo que se pretende es mostrar lo sencillo que puede ser crear un paquete nuget y compartirlo. En este caso, lo subiremos a un host público, consiguiendo un paquete visible a cualquier a desarrollador.

 

Crear dll

El primer paso, es crear una dll con las funcionalidades que se desea compartir. Para este ejemplo, se ha creado un proyecto sencillo con una única clase, que lo único que hace es sumar los elementos de un array de enteros o de decimales

public class Sumator
{
    public decimal Suma(decimal[] values)
    {
        return values.Sum();
    }

    public int Suma(int[] values)
    {
        return values.Sum();
    }
}

Una vez que se ha desarrollado toda la funcionalidad del paquete, es necesario configurar la dll

En este caso, se puede observar que se ha informado el Identificador del paquete, versión, autor, compañía, producto, descripción, notas, URL… Con dicha información será suficiente para crear el paquete.

 

Crear cuenta nuget

Tal y como se ha indicado al inicio del post, el paquete que se desarrolla en este post se publica en un host público. En este caso es en www.nuget.org Por lo tanto, es necesario crear una cuenta o entrar con una de Microsoft.

Una vez que hemos creado la cuenta, es necesario crear un API Key, que será utilizado para empaquetar la dll que se ha desarrollado previamente. En la siguiente imagen se muestra como hacerlo.

Tras crear el API Key, tenemos que copiarlo para poder utilizarlo posteriormente. Es importante que este API Key no se público, ya que si alguien lo tiene lo puede usar con fines maliciosos, haciendo que vuestro paquete deje de funcionar o lo haga de forma incorrecta.

 

Empaquetar dll

En este punto, ya esta creada nuestra dll y tenemos tanto una cuenta en nuget, como un API key. Por lo que solo falta realizar el empaquetado, para ello, hay que cambiar la configuración a Release 

Con la configuración en Release, el siguiente paso es empaquetar la dll. Se puede hacer desde el menú contextual del proyecto.

Tras el empaquetado, en la carpeta release del proyecto (…\bin\Release) se ha creado un archivo con extensión .nupkg. Este paquete es el que a continuación se subirá a la web de nuget para publicarlo y dejarlo disponible a todos los desarrolladores.

 

Publicar paquete

Una forma sencilla de subir el paquete a nuestro perfil nuget es mediante la consola con la siguiente instrucción

Nótese que la instrucción se lanza desde la ruta de la carpeta release del proyecto. En este caso E:\Projects\SumaNuget\SumaNuget\bin\Release

En la instrucción es necesario cambiar SumaNuget.1.0.0.nupkg por el nombre de su paquete, el creado en el paso anterior.

Asimismo, en la imagen se aprecia una zona en gris. Ahí es donde hay que escribir el API Key obtenido en pasos anteriores, cuando se estaba creando la cuenta de nuget.

Tras lanzar la instrucción desde consola, se puede observar que el paquete se ha subido a nuestra cuenta de nuget, a los paquetes publicados.

A pesar de que el paquete esté subido y asociado a nuestro perfil, es posible que tarde unos minutos en hacerse público. Por lo que si lo buscamos desde el administrador de paquetes nuget no aparecerá. Lo normal es que tarde alrededor de 30 minutos. Así que en este paso hay que ser pacientes.

 

Utilizando nuestro nuget

En los pasos anterior se ha creado una dll, se ha empaquetado y publicado. Lo único que hay que hacer para utilizarlo es instalarlo desde el administrador de paquetes Nuget

Tras instalarlo, ya se puede utilizar toda la funcionalidad de nuestra dll.

 

Aquí os dejo un enlace en el que encontrar un proyecto con una implementación completa del ejemplo.

https://github.com/jorgediegocrespo/SumaNuget

 

Un saludo!!