>_

Escenario

Hace unos meses, y a raíz de un proyecto en el que estoy trabajando, surgió la necesidad de utilizar Log4Net desde un proyecto ASP.NET Core.

Así que buscando información al respecto, encontré un artículo de Anuraj P | en el que contaba cómo crear y configurar un Logger para Log4Net en ASP.NET Core.

Implementé (con alguna pequeña modificación) la solución que planteaba en el proyecto, y se me ocurrió que como a mi, igual había más desarrolladores que se pudiesen encontrar en esa misma situación:

Usar Log4net sin tener alguna librería que les permitiera hacerlo sin preocuparse de los detalles de implementación.

Y por eso, decidí crear un NuGet package para resolver esta carencia.

Crear un NuGet

Para crear un NuGet package no demasiado complejo en .NET Core que contenga una librería simple (con o sin dependencias) no hace falta configrar mucha cosa.

De hecho, desde Visual Studio 2017 existe una opción que de un modo más o menos automático te permite generar un NuGet package y configurar los campos de metadatos que contendrá ese paquete.

Para ello, debes acceder, una vez creado el proyecto, a las propiedades del mismo y seleccionar la pestaña Package, marcando posteriormente la opción Generate NuGet package on build.

NuGet-Core-Configuration

Al compilar tu proyecto, se generarán las librerías correspondientes y, inmediatamente después, el nuget package que las contiene para que cualquiera pueda consumirlas.

Ten en cuenta el detalle de compilar tus NuGet packages en Release antes de subirlos. Parece una tontería, pero… ;)

Por otro lado, si no tienes Visual Studio, o tienes que hacer un NuGet algo más complejo, no lo dudes y sigue el tutorial que NuGet.org publica en su página web para crear NuGet packages.

Publicar un NuGet

Una vez generado el paquete NuGet, subirlo a NuGet.org es igual de sencillo.

Accede a https://www.NuGet.org/packages/manage/upload (requiere registro previo), selecciona Browse…, navega hasta donde hayas generado tu package (normalmente en la carpeta de binaries de tu proyecto, una vez compilado) y acepta la subida.

NuGet-Upload

Al cabo de unos minutos, el paquete estará disponible para su descarga.

Después de publicar

Lo más impresionante (para mi) de todo esto es que hace 4 meses que publiqué la primera versión del NuGet, hace un mes que publiqué una segunda versión y, para mi sorpresa, acumula más de mil descargas desde entonces, a 9 descargas diarias de media…

¡Hay gente que usa mi NuGet!

Tengo que reconocer que mi ego se alimenta un poco de este mini-éxito. Me hace sentir orgulloso el pensar que hay alguien al que estoy ayudando de una forma indirecta.

Publicar el código fuente a Github

La publicación del código fuente en algún repositorio accesible a cualquier desarrollador iba implícito en mi idea inicial: compartir.

Publicar un NuGet sin compartir tu código en paralelo sólo tiene sentido si:

  • Tienes un acuerdo de confidencialidad o de cesión de derechos
  • Eres muy proteccionista con tu código

En mi caso no aplicaban ninguno de los dos puntos, porque si bien el código que desarrollo para mi empresa es de su propiedad, en este caso no era código para mi empresa. Es código público que está en un blog post público al que todo el mundo tiene acceso. Del que yo me he aprovechado.

Así que, publiqué el código fuente del NuGet en Github.

Y, al contrario de lo que pensaba, hay respuesta por parte de la comunidad Open Source.

Hace pocos días registraron la primera issue en el repositorio, de alguien a quien le había parecido interesante el proyecto, que había decidido utilizarlo y que además se había molestado en revisar el código para certificar que existía un bug (thank you very much @georgechr).

Por mi parte, he intentado (e intentaré) dar respuesta lo más rápido posible a cualquier feedback que reciba para este proyecto, porque creo que la persona que se molesta en abrir una issue y usar parte de su tiempo para reportarte un error, una observación o cualquier información que pueda hacer que mejore el código y de rebote me haga aprender algo (es egoísmo, lo sé), merece la pena el esfuerzo.

Así que, si alguno de vosotros utilizáis en algún momento algo de este proyecto, y tenéis algo que decir…

Any feedback is welcome!