>

18 de agosto de 2014

NUGET: Compartir repositorio entre soluciones


NUGET es una herramienta que facilita enormemente el trabajo con las referencias de un proyecto desarrollado en VStudio. Simplemente con indicarle a NUGET la librería que queremos usar, él se encarga de localizarla en el repositorio público, descargarla, añadirla al proyecto y realizar la configuración básica. Todo ventajas.

Sin embargo, podría ponerse un pero. La configuración por defecto de NUGET hace que los paquetes se descarguen en una carpeta denominada packages ubicada a nivel de solución. Es decir, si una misma referencia (pongamos por ejemplo Unity), se necesita en dos soluciones diferentes, ésta se descargará dos veces, una a cada carpeta packages de cada una de las soluciones.

En este caso lo óptimo sería descargarlo únicamente una vez y compartir dicho fichero entre todas las soluciones que lo requiera. La solución es bien sencilla. Basta modificar el fichero nuget.config (ubicado en la carpeta .nuget a nivel  de solución) de cada una de las soluciones que quieran emplear ese repositorio común. El resultado sería el siguiente:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
      <add key="repositorypath" value="d:\sourcecode\nuget.packages" />
  </config>
  <solution>
     <add key="disableSourceControlIntegration" value="true" />
  </solution>
</configuration>


Para acabar de completar la configuración, esta misma ruta puede añadirse como origen de paquetes disponibles (Herramientas > Administrador paquetes NuGet > Configuración del Administrador de Paquetes) 



Así, de esta manera, la primera vez que se solicite un paquete a NUGET éste se descargará a la carpeta común (c:\sourcecode\nuget.packages en el ejemplo) y a partir de ahí el resto de solicitudes se atenderán desde la misma en lugar de volver a descargarse.