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.
-
Que todas las referencias sean relativas a la ruta raiz de la solución.
-
Centralizar los binarios de los cuales no tenemos fuentes en una sola carpeta.
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.
