viernes, 8 de marzo de 2013

Manejando extensiones Visual Studio con NuGet

image
por Diego Tubello y Cristian Fernandez
baunet_dtubello_LThumb Cristian
Diego y Cristian se encuentran desarrollando proyectos con Visual Studio y encontraron muy útil esta extensión. En este artículo nos cuentan varios aspectos de esta utilidad.

Introducción

NuGet es una extensión de Visual Studio que permite agregar fácilmente librerías de terceros a un proyecto .Net. Cuando se instala un paquete NuGet se copian automáticamente los archivos a la solución y hacen automáticamente los cambios que sean necesarios: agrega dependencias, modifica el web.config. Si se desinstala un paquete, NuGet “deshace” estos cambios. NuGet esta disponible a partir de Visual Studio 2010.

 

Paquetes NuGet

Todo lo necesario para instalar un paquete se contiene en un archivo .nupkg. El paquete contiene todos los archivos que se deben copiar al proyecto, un archivo manifest que describe su contenido y las acciones necesarias para instalar y desinstalar el paquete.

 

Instalación

La instalación se realiza desde el “Extension Manager” de Visual Studio (menú Tools > Extension Manager). clip_image002 clip_image004 Puede ser que la extensión ya se encuentre instalada. En ese caso seleccionar la opción Updates en el panel de la izquierda. Para algunas versiones anteriores de NuGet, da un error al actualizarlo. Si se da este caso, es necesario desinstalar la versión previa para luego instalar la nueva versión. Es recomendable verificar si hay actualizaciones de la herramienta ya que re lanzan nuevas versiones periódicamente.

Agregar, actualizar y remover paquetes


Agregar un paquete a un proyecto

Sobre el proyecto, desplegar el menú contextual y elegir “Manage Nuget Packages” clip_image006 Sobre la izquierda de la ventana, seleccionar la categoría “Online”, para que aparezcan los paquetes disponibles para descargar. A la derecha hay un cuadro de texto que permite hacer búsquedas. clip_image008 Una vez que encontramos el paquete buscado, seleccionarlo. En el panel de la derecha aparecerá la información del paquete: creador, descripción, versión y dependencias. Para instalarlo presionar “Install”. clip_image010 La herramienta descargará e instalara como dependencia del proyecto el paquete junto con todas las dependencias que este tenga a su vez. Si ahora vamos a la categoría “Installed Packages” podemos ver todos los paquetes instalados en los proyectos de la solución. clip_image012 clip_image014 clip_image016 La herramienta creará la carpeta “packages” a nivel de la solución, donde almacenará los paquetes descargados. clip_image018 Por otro lado, en el proyecto se agregará un archivo (packages.config) que contendrá las dependencias (identificador de paquete y versión) de nuestro proyecto. Cuando se añade un paquete a un proyecto:
  • Se descarga el paquete y los paquetes dependientes en la carpeta ‘packages’ que se crea a nivel de la solución.
  • Se añaden las referencias necesarias al proyecto.
  • En su caso se modifican los archivos de configuración necesarios.
  • Se actualiza el archivo packages.config del proyecto con la información de las nuevas dependencias.
Si nos paramos sobre la solución, y en el menú contextual elegimos la opción “Manage Packages for Solution”, podemos ver los paquetes instalados en toda la solución. Para ver en qué proyectos está instalado un paquete, presionar el botón “Manage”. Ahí mismo se pueden marcar otros proyectos en los que se desea instalarlo. clip_image020

 

 

 

 

Actualización de Paquetes

La herramienta también permite actualizar los paquetes previamente instalados a nuevas versiones. Para ello abrir la ventana de administración de paquetes y sobre la izquierda seleccionar la categoría “Updates”. En el panel central aparecerán todos los paquetes para los cuales hay una versión más reciente disponible que la que está instalada en el proyecto. Al seleccionar un paquete, en el panel de la derecha aparece la información de la versión que tenemos instalada y la nueva versión. Al presionar el botón “Update” se actualizará el paquete junto con sus dependencias. clip_image022

 

 

 

Remover paquetes

Para remover un paquete, basta con ir a la categoría “Installed Packages”, seleccionar el paquete correspondiente y presionar el botón “Uninstall”. clip_image024

 




 

No-Commit Strategy

Una de las ventajas que tiene NuGet para gestionar dependencias es que permite no hacer commit/check-in de las librerías de terceros al repositorio de código. La opción “Enable NuGet Package Restore”, permite que los paquetes se descarguen automáticamente al compilar la solución (si no se descargaron previamente). Como la herramienta guarda en un archivo de configuración las versiones exactas de cada componente, puede descargar los mismos paquetes y versiones que se agregaron originalmente. Para habilitar el restore, pararse sobre la solución y en el menú contextual elegir la opción “Enable NuGet Package Restore”. clip_image026 Nos aparecerá una ventana pidiendo que confirmemos la operación. clip_image028 clip_image030 Al finalizar veremos que en la solución se agregó la carpeta “.nuget” con los archivos necesarios para poder realizar la restauración de paquetes. Importante: el restore funciona incluso sin Visual Studio. Por ejemplo, si se ejecuta el build con msbuild desde una herramienta de integración continua, los paquetes también se descargarán automáticamente.

 

Tips & Tricks

No agregar dependencias a mano de librerías descargadas con NuGet: Si instalamos una librería en uno de los proyectos de la solución usando NuGet y luego debemos agregarla en otro de los proyectos de la misma solución, hay que utilizar la opción “Manage Packages for Solution”. Si agregamos la referencia a mano (usando Add Reference o el tooltip de resharper), NuGet no registrará que agregamos esa dependencia y no funcionará correctamente (entre otras cosas el Package Restore). Sólo se deberían agregar a mano aquellas dependencias que no se estén administrando con NuGet. Nuget package restore: cada desarrollador tiene que activarlo en Visual Studio: Si otro desarrollador descarga la solución con Package Restore, puede ser que no se descarguen automáticamente las dependencias. En este caso verificar en Visual Studio, en el menú “Tools > Options” que la opción “Allow NuGet to download missing packages during build” esté habilitada. Esta opción se habilita automáticamente si nosotros configuramos el restore en la solución, pero puede estar deshabilitada en el IDE de otro desarrollador que descarga la solución del repositorio clip_image032

Referencias

· Sitio oficial de NuGet En el siguiente link van a poder encontrar mas de 10000 packages , subir tus propios packages, consultar estadisticas, documentacion y blog. http://nuget.org/ image · Documentación (muy completa, incluye ejemplos y videos): http://docs.nuget.org/

twitter-icon
Seguinos en Twitter
Seguir a @baufest_ar
Seguir a @baufestusa