Buenas,
hoy el amigo Juan ha escrito un post donde nos presenta un poco a NuGet. Como deja la pelota en el aire y además se presta un poco a una charla que tuvimos con @EduDelPozo, hoy toca hablar un poco sobre como trabajar con NuGet y Team Foundation Server.
Primero lo primero, en mi caso partimos de una estructura de directorios donde separamos por un lado el código fuente en la carpeta SRC y luego las bibliotecas compartidas en la carpeta LIB.
En la imagen anterior podemos ver en este proyecto hay 2 bibliotecas de clases. Para complicar un poco más el escenario vamos a agregar un par de referencias de Enterprise Library desde NuGet. En este caso logging desde http://nuget.org/packages/EnterpriseLibrary.Logging.
Una vez instalado ya tenemos nuestras dlls agregadas como referencia y en el proyecto se ha agregado el archivo package.config.
1: Each package is licensed to you by its owner. Microsoft is not responsible for,
2: nor does it grant any licenses to, third-party packages. Some packages may
3: include dependencies which are governed by additional licenses. Follow the
4: package source (feed) URL to determine any dependencies.
5:
6: Package Manager Console Host Version 1.8.30524.9000
7:
8: Type 'get-help NuGet' to see all available NuGet commands.
9:
10: PM>; Install-Package EnterpriseLibrary.Logging
11: Attempting to resolve dependency 'EnterpriseLibrary.Common (≥ 5.0)'.
12: Attempting to resolve dependency 'Unity.Interception (≥ 2.1)'.
13: Attempting to resolve dependency 'Unity (≥ 2.1)'.
14: Attempting to resolve dependency 'CommonServiceLocator (≥ 1.0)'.
15: Successfully installed 'CommonServiceLocator 1.0'.
16: You are downloading Unity from Microsoft patterns &; practices, the license
17: agreement to which is available at http://www.opensource.org/licenses/ms-pl.
18: Check the package for additional dependencies, which may come with their own
19: license agreement(s). Your use of the package and dependencies constitutes
20: your acceptance of their license agreements. If you do not accept the
21: license agreement(s), then delete the relevant components from your device.
Ahora bien, en nuestro caso habíamos definido que las referencias externas debían ir a la carpeta LIB. Como NuGet es inteligente pero no tanto, tenemos que indicarle que tiene que cambiar el comportamiento por defecto. Que consiste en dejar los ensamblados en una carpeta packages, por ejemplo
[…\NuGet\src\ClassLibrary2\packages\EnterpriseLibrary.Common.5.0.505.0\lib\NET35\Microsoft.Practices.EnterpriseLibrary.Common.dll]
Pues bien, para cambiar esta funcionalidad seleccionamos la solución, desplegamos el menú contextual y seleccionamos la opción [Enable NuGet Package Restore]
Esta acción nos agrega un nuevo solution folder llamado .nuget y dentro del mismo agrega el ejecutable de NuGet y un archivo de MSBuild con diferentes targets para la descarga de los paquetes.
Si vamos al directorio veremos que también se crea un archivo llamado NuGet.Config. Pero para nuestro ejemplo no será este archivo de configuración el que defina el directorio de descarga de los paquetes. Lo que haremos será lo siguiente:
1. Agregar un archivo llamado nuget.config en el directorio de la solución
2. Dentro del mismo definir el path de descarga de los paquetes con el siguiente código
<?xml version="1.0" encoding="utf-8"?>
<settings>
<repositoryPath>..\..\..\Lib</repositoryPath>
</settings>
3. Done !!!
Si vemos la carpeta lib, veremos que dentro de la misma tenemos los paquetes con los que estamos trabajando
Ahh y gracias al @Edudelpozo que me dió una mano con esta última parte
.
Si subimos los paquetes a la carpeta lib de nuestro TFS ya tendremos todo listo para trabajar on the fly !!!
Saludos @ Home
El Bruno
Leave a reply to [#NUGET] Problemas de rendimiento, pues SI :S – El Bruno Cancel reply