Recentemente, comecei a trabalhar para um novo cliente com uma antiga base de código herdada na qual existem várias soluções .net, cada uma normalmente hospeda alguns projetos exclusivos dessa solução, mas depois "empresta" / "vincula" (adiciona projeto existente) outros projetos que tecnicamente pertence a outras soluções (pelo menos se você seguir a estrutura de pastas no TFS)
Eu nunca vi uma configuração tão entrelaçada, não há uma ordem de compilação clara, às vezes um projeto na solução A apenas dlls de referência diretamente do diretório de saída de um projeto hospedado na solução B, às vezes o projeto foi incluído diretamente, mesmo que resida Muito longe na estrutura da pasta.
Parece que tudo foi otimizado para preguiça do desenvolvedor.
Quando os confrontei por que eles não tinham um servidor de IC, eles responderam que é difícil configurar o código organizado como ele é. (Estou configurando agora e xingando essa organização de código)
As soluções são organizadas em torno de artefatos de implantação (as coisas que precisam ser implantadas juntas estão na mesma solução), o que eu acho que é uma decisão sábia, mas o conteúdo dessas soluções (os projetos) está em todo lugar.
Existe um consenso de uma prática recomendada a ser usada ao reutilizar bibliotecas de classes comuns em várias soluções / artefatos de implantação,
- Como estruturar o código no VCS
- Como facilitar o compartilhamento da lógica de negócios entre artefatos de implementação separados