Una forma de estructurar soluciones en Visual Studio

Quisiera compartir una de las tantas formas en las que se pueden estructurar soluciones en Visual Studio, y en File System.  Claro, que este tema es un poco particular y depende de los gustos y costumbres de cada desarrollador.  Yo me acostumbré a esta que les voy a mostrar ahora, y que me ha dado buenos resultados.

Algunas premisas al momento de armar una solución:

  • Contar con todo en una carpeta física del file system.
    • Permite copiar sin olvidar nada
    • Hacer backups completos
    • Permite hacer copias de fuentes por versión liberada.
  • Que todas las referencias sean relativas a la ruta raiz de la solución.
    • Permite mover el proyecto de carpetas y no perder referencias
  • Centralizar los binarios de los cuales no tenemos fuentes en una sola carpeta.
    • En caso de un cambio de versión, todos los proyectos apuntarán al mismo assembly.

La siguiente figura muestra la forma de estructurar una solución en Visual Studio.  Las carpetas dentro de las cuales están los proyectos nada tienen que ver con las carpetas físicas del file system.  Son carpetas virtuales y ayudan a agrupar los proyectos por temas. La forma de crearlas es: Click derecho sobre la solución, Add, New Solution Folder.

A continuación veamos como están distribuidos los proyectos en el file system.
En el directorio raiz donde esta toda la solución existen varias archivos .sln (los que definen la solución en VS). El motivo es poder abrir soluciones dependiendo de cada necesidad.

  • La solución Logik.Censo.sln es la definción completa y válida. Sirve de referencia para todos los desarrolladores. Trabajando con control de fuentes esta solcuión sirve de referencia y no debería ser modificada sino por el developer lead.
  • La solución Logik.Censo.Build.sln contiene todos los proyectos y permite compilar por completo todas las soluciones.
  • Las soluciones Logik.Censo.CW.sln y Logik.Censo.VHP.sln pertenecen a desarrolladores, lo que permite hacer cambios en la estructura a cada uno sin modificar la solución del otro. Si trabajamos con un control de fuentes, esto es escencial.
  • La solución Logik.Censo.Mobile.sln o Logik.Censo.Windows.sln solo contiene los proyectos en la tecnología en la que están trabajando. Esto permite un manejo mas ágil de la solución.

Luego cada proyecto está contenido en una carpeta cuyo nombre se corresponde con el nombre del proyecto.

Por último veamos donde se almacenan los binarios de los cuales no tenemos los fuentes en esta solución.  Están contenidos en una carpeta Assemblies dentro del raiz de la solución. Esto permite mantener una referencia relativa, y que todos los proyectos apunten al mismo archivo.

Noten la referencia a los assemblies externos de la solución hacia la carpeta assemblies. La opción Copy Local = true copiará el binario al directorio bin correspondiente al momento de compilar, lo cual nos asegura contar con él al momento de hacer el deploy.

9 thoughts on “Una forma de estructurar soluciones en Visual Studio

  1. Carlos, tengo una solucion que contiene unos 80 assemblies, algunos son exe los demas librerias de clases y controles, todas las referencias entre los proyectos son por proyecto y con copia local true, todos las dll se compilan en el bin de su proyecto, y los exe en un directorio especifico, como para tener la solucion completa en un solo directorio.
    Estoy teniendo muchisima lentitud al compilar, tenes algun consejo para agilizar la compilacion? manual o algo? Muchas Gracias.

  2. Si estas compilando para hacer un build completo de la solución para liberarla, no tenes otra ocpción que compilarla toda.

    Pero si estas trabajando en alguna funcionlidad específica, y solo hiciste cambios en algunos assemblies que tenes que recompilar, podrías indicarle a Visual Studio, que compile solo los necesarios:
    Botón derecho sobre la solución: Properties. En el arbol de la izquierda hacé click en Configuration Properties / Configuration. En la lista de la derecha podrás marcar que proyectos quieres que se incluyan en el proceso de build. Como explico en el post, podés crear varias soluciones para incluir en cada una de ellas la configuración de build que más te convenga.

  3. Como logras crear mas de una solucion en una carpeta, mi VS tiene deshabilitada la opcion y siempre crea una nueva carpeta?

  4. debes hacerlo con proyectos existentes. A medida que vayas abriendo proyectos y agregándolos verás creada una nueva solución. Luego haces botón derecho, guardar como, y decides donde grabarla.

  5. Estimado Carlos, me parece muy ilustrativo tu ejemplo. Espero que me puedas ayudar, trabajo en Visual Studio 2002 (Framework 1.0), y además tengo instalado Visual Estudio 2003(Framework 1.1). En las propiedades de proyecto, al hacer clic en la opcion configuration Properties -> Build
    Se ctiva en el cuadro Plataform: Active(.NET).
    Mi pregunta es, en este lugar se selecciona la versión de Framework con la que se ejecutará mi programa?
    De antemano mil gracias por tu ayuda.
    Por favor si puedes escríbeme a:
    jcsmguitar@hotmail.com

  6. Lo que econtrarás ahí es la posibilidad de especificar la plataforma en la que quieres compilar tu código:
    .NET
    Win32 (proyectos no manejados)
    Windows CE
    Pocket PC
    etc.

    Para compilar en una versión de Fwk específica, te recomiendo que lo hagas desde el Visual Studio que le corresponde.

  7. Hola Carlos, tengo una duda con las rutas relativas en los proyectos. ¿Por qué cuando las utilizo, el visual studio 2005 me redirige hacia ‘C:\Archivos de programa\Microsoft Visual Studio 8\Common7\IDE\’ cuando para mi proyecto, su solución, sus dependencias, sus librerias, es decir, todo está como raíz en otra parte (por eso utilizo referencias relativas)?
    No entiendo porque me busca ahí. No sé si es una configuración por defecto, o alguna propiedad que no veo, pero me tiene preocupado la verdad. Cada vez que utlizo una ruta, se va directamente a buscarla ahí, a no ser que utilice rutas absolutas claro…

    Gracias, un saludo
    JM CARO

  8. Hola
    Las images que tienes como ilustración del artículo, no existen. No se pueden ver. Sí las puedes volver a restituir, te lo agradecería. Gracias.

    Saludos,

Leave a Reply

Your email address will not be published. Required fields are marked *