jueves, 7 de abril de 2011

¿Referencias a proyectos o a ensamblados?

Uno de los pilares para el día a día del desarrollo con .NET es una correcta estructuración de la solución o soluciones con las que trabajamos. Una de las partes fundamentales de esta estructuración es organizar las referencias a ensamblados de terceros, ensamblados de los que poseemos el código fuente, proyectos de la solución,...

La diferencia entre organizar correctamente una solución y no tener en cuenta esta estructuración marca la diferencia entre que el desarrollo sea una tarea simple y rutinaria o que consiga minar nuestra paciencia.

A continuación mencionaré una serie de pautas generales a tener en cuenta para el desarrollo, ventajas e inconvenientes de cada una de ellas y escenarios en los que estas recomendaciones pueden servir.
 
Para empezar, describir cómo se añaden las referencias a un proyecto. En Visual Studio tenemos tres formas de agregar referencias a un proyecto:
  1. En el menú contextual del proyecto, la opción añadir referencia o referencia Web:SNAG-3
  2. En el menú contextual de la carpeta de referencias del proyecto, la opción añadir referencia o referencia Web (idéntica a la anterior, pero la opción es más fácil de localizar ya que el menú contextual anterior contiene un número mayor de opciones):SNAG-4
  3. Exclusivamente para proyectos Web, a través de la página de propiedades del proyecto, podemos gestionar las referencias a otros proyectos o ensamblados. Esta opción es muy útil cuando, al compilar, no se refrescan aquellas modificaciones que hemos realizado en algún proyecto referenciado por nuestro proyecto Web.

SNAG-12
Voy a centrarme en aquellas referencias que no son Web. Cuando agregamos referencias podemos hacerlo a los siguientes ensamblados:
  • Ensamblados de .NET
  • Ensamblados de componentes COM
  • Referencias a proyectos
  • Fichero de ensamblado
Desde un punto de vista funcional, podemos dividir en los ensamblados en dos grupos: ensamblados de terceros y ensamblados propios. Los ensamblados propios son todos aquellos de los que poseemos el código fuente. Los ensamblados de terceros serían todos aquellos cuyo código fuente no poseemos. Siguiendo esta agrupación, las referencias a proyecto pertenecerían al grupo de ensamblados propios, mientras que el resto pertenecería al grupo de ensamblados de terceros (NET, COM o fichero).
Existe una pequeña salvedad en esta agrupación que explicaré más adelante.
Una vez seleccionamos agregar la referencia a nuestro proyecto se muestra el siguiente cuadro de diálogo, donde podemos elegir el ensamblado que queremos incluir:SNAG-5
En caso de  que la referencia sea a un ensamblado propio, mi recomendación general es que siempre agreguéis el proyecto a la solución y la referencia sea a proyecto. El siguiente enlace describe con mayor detalle la inclusión de referencias.
 

Referencias a proyecto vs. Referencias directas

A la hora de referenciar un ensamblado si no poseemos el código fuente, no hay nada que pensar, la referencia siempre será externa.
Por otra parte, si poseemos el código fuente, tenemos dos opciones: añadir la referencia a proyecto o añadir la referencia al ensamblado generado. En este apartado vamos a analizar qué ventajas e inconvenientes tiene una opción y la otra.
 

Referencias a proyecto

Ventajas
  • Se conoce el detalle de las excepciones producidas en el ensamblado
  • Existe trazabilidad del código
  • No es necesario tener múltiples IDE’s abiertos para trabajar
Inconvenientes
  • Es necesario añadir el proyecto a la solución
  • Al estar incluido en la solución será compilado si no es excluido
  • Compilación más lenta
  • Requiere mayor dominio del uso de soluciones en Visual Studio

Referencias a ensamblado

Ventajas
  • Menos proyectos en la solución
  • Compilación más rápida
Inconvenientes
  • Se pierde visibilidad de las excepciones que se produzcan dentro del ensamblado
  • No existe trazabilidad del código
  • Suele ser necesario tener múltiples IDE’s abiertos para trabajar

Trucos
La tarea de asociar referencias a proyectos no suele ser nada divertida, sino más bien una tarea repetitiva y rutinaria. Para hacer un poco más llevadera dicha tarea os dejo algún truco que os permita simplificar esta labor.
Referencias Recientes
En el cuadro de diálogo de agregar referencia, la última pestaña guarda los últimos ensamblados añadidos como referencia a otros proyectos.
Herramientas para facilitar esta tarea
El conjunto de herramientas PowerCommands permite facilitar la terea de copiar referencias de un proyecto a otro. Una vez instaladas en nuestro Visual Studio, si pinchamos en cualquier referencia de un proyecto, aparecerá una nueva opción en el menú contextual:
 
 
 
SNAG-11Si pinchamos con el botón secundario en la carpeta de referencias del proyecto destino donde queremos copiar las referencias nos aparecerá la opción de pegar:
 























No hay comentarios:

Etiquetas