Recentemente ho iniziato a lavorare per un nuovo client con una base di codice vecchia legacy in cui ci sono più soluzioni .net, ognuna di solito ospita alcuni progetti unici per tale soluzione ma poi "prende in prestito" / "link" in "(aggiungi progetto esistente) altri progetti che tecnicamente appartengono ad altre soluzioni (almeno se vai dalla struttura di cartelle in TFS)
Non ho mai visto un setup così intrecciato, non esiste un chiaro ordine di build, a volte un progetto in soluzione A si riferiscono alle DLL direttamente dalla directory di output di un progetto ospitato nella soluzione B, a volte il progetto è stato incluso direttamente anche se risiede lontano nella struttura della cartella.
Sembra che tutto sia stato ottimizzato per la pigrizia degli sviluppatori.
Quando li ho confrontati con il motivo per cui non avevano un server CI hanno risposto che è difficile da configurare con il codice organizzato come è. (Lo sto configurando ora e maledico questa organizzazione del codice)
Le soluzioni sono organizzate attorno a artefatti di distribuzione (cose che devono essere distribuite insieme sono nella stessa soluzione) che I think è una decisione saggia, ma i contenuti di tali soluzioni (i progetti) sono dappertutto.
Esiste un consenso su una best practice da utilizzare quando si riutilizzano le librerie di classi comuni tra più soluzioni / risorse di distribuzione,
- Come strutturare il codice nel VCS
- Come facilitare la condivisione della logica di business tra gli artefatti di distribuzione separati