Recientemente comencé a trabajar para un nuevo cliente con una antigua base de código heredada en la que hay múltiples soluciones .net, cada una de ellas típicamente alberga algunos proyectos únicos para esa solución, pero luego "toma prestados" / "enlaces" (agregue el proyecto existente) algunos otros proyectos que técnicamente pertenece a otras soluciones (al menos si vas por la estructura de carpetas en TFS)
Nunca he visto una configuración tan entrelazada, no hay un orden de compilación claro, a veces un proyecto en la solución A solo hace referencia a dlls directamente desde el directorio de salida de un proyecto alojado en la solución B, a veces el proyecto se ha incluido directamente incluso si reside LEJOS en la estructura de carpetas.
Parece que todo ha sido optimizado para la pereza del desarrollador.
Cuando me enfrenté a ellos por qué no tenían un servidor CI, respondieron que es difícil configurar el código organizado como está. (Lo estoy configurando ahora y maldijo esta organización de código)
Las soluciones están organizadas en torno a artefactos de implementación (las cosas que deben implementarse juntas se encuentran en la misma solución), lo que creo que es una decisión acertada, pero el contenido de esas soluciones (los proyectos) está por todas partes.
¿Existe un consenso de una mejor práctica para usar al reutilizar bibliotecas de clases comunes en múltiples soluciones / artefactos de implementación,
- Cómo estructurar código en el VCS
- Cómo facilitar el intercambio de lógica empresarial entre artefactos de implementación separados