Nota: Esto es para una tienda que funciona en C++, C++/CLI y C# con algunos productos entregados como una combinación de los tres.¿Debe contener un proyecto de Visual Studio en más de una solución?
Actualmente, tenemos la regla de que un proyecto debe tener una solución que solo contenga una. La regla se instaló originalmente porque el complemento de control de código fuente para Visual Studio no pudo hacer frente a los proyectos que estaban contenidos en varias soluciones, siempre intentando cambiar los enlaces de control de origen cuando se cambia de una solución a otra.
Por otros motivos, vamos a dejar de usar el plugin de control de fuente (sin descartar el control de fuente, solo el complemento de muerte cerebral). Se vuelve a abrir la cuestión de si continuar o no la política de restringir proyectos para que estén contenidos en una sola solución.
Tenemos un buen código en bibliotecas, archivos DLL y ensamblajes que son consumidos por múltiples productos entregables, y actualmente lo controlamos con un sistema de administración de dependencias entre soluciones donde si uno está trabajando en la solución para un producto final, es una cuestión simple solicitar una compilación de las soluciones de dependencia, que inicia otras instancias de Visual Studio para compilarlas. El sistema funciona, pero tiene los siguientes inconvenientes:
- las soluciones para los proyectos comunes son a menudo demasiado grasa, que contiene un par de proyectos que necesita el producto que se está desarrollando actualmente y por lo general mucho más que no son necesarios para la trabajo de desarrollo a mano. Simplemente han sido agrupados en una especie de solución integral que cubre proyectos que están vagamente relacionados. Esto da como resultado tiempos de compilación extendidos debido a la compilación de código innecesario.
- Donde hemos tratado de resolver las soluciones de grasa anteriores, a menudo nos queda una solución demasiado delgada que contiene solo un proyecto. Cada uno de estos requiere una configuración adicional en el sistema de administración de dependencias entre soluciones. Esto también puede aumentar los tiempos de compilación a medida que se activan varias instancias de Visual Studio.
Estoy considerando revisar la política para permitir que un proyecto utilizado en múltiples productos entregables esté contenido en más de una solución. Podríamos eliminar la administración de la dependencia entre soluciones y reducir drásticamente la cantidad de soluciones (hasta una por producto). Me preocupa la cantidad de trabajo que llevará a cabo esta reorganización y si valdrá la pena o no. Me temo que ni siquiera podré detectar los beneficios potenciales hasta que el equipo haya estado trabajando con esto por un tiempo. También preveo un par de problemas potenciales que son las verdaderas preguntas aquí.
- ¿Existe una gran cantidad de proyectos en una sola solución que planteen problemas de estabilidad en Visual Studio 2005 (nuestra plataforma de desarrollo actual)? ¿Mejora en VS 2008 o VS 2010?
- Si un proyecto está contenido en más de una solución, ¿cómo se pueden gestionar los efectos en las múltiples soluciones si las configuraciones del proyecto se modifican (como agregar una nueva configuración)?
Para cualquiera que ya trabaje en un entorno con una solución por producto entregable, con componentes comunes como proyectos contenidos en múltiples soluciones: ¿Ha encontrado algún inconveniente importante en dicha configuración?
Gracias por hacerme pensar sobre las implicaciones de $ (SolutionDir) en los proyectos. Usamos $ (SolutionName) en nuestros archivos de proyecto y esto debería ser reconsiderado. – GBegen