Di recente ho iniziato a lavorare per un nuovo client con una vecchia base di codice legacy in cui ci sono più soluzioni .net, ognuna in genere ospita alcuni progetti unici per quella soluzione ma poi "prende in prestito" / "collegamenti" (aggiungi progetto esistente) altri progetti che tecnicamente appartiene ad altre soluzioni (almeno se si passa dalla struttura delle cartelle in TFS)
Non ho mai visto una configurazione così intrecciata, non esiste un ordine di compilazione chiaro, a volte un progetto nella soluzione A fa solo riferimento alle DLL direttamente dalla directory di output di un progetto ospitato nella soluzione B, a volte il progetto è stato appena incluso direttamente anche se risiede Lontano nella struttura delle cartelle.
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, mi hanno risposto che è difficile impostare il codice organizzato così com'è. (Lo sto configurando ora e maledendo questa organizzazione del codice)
Le soluzioni sono organizzati intorno artefatti distribuzione (roba che deve essere distribuito insieme si trovano nella stessa soluzione), che io penso è una decisione saggia, ma il contenuto di tali soluzioni (i progetti) sono in tutto il luogo.
Esiste un consenso sulle migliori pratiche da utilizzare quando si riutilizzano librerie di classi comuni su più soluzioni / artefatti di distribuzione,
- Come strutturare il codice nel VCS
- Come facilitare la condivisione della logica aziendale tra artefatti di distribuzione separati