Un principio utile nella programmazione del computer è DRY (Do not Repeat Yourself). Sto cercando di seguire questa regola mentre sto rifattorizzando un grande progetto .NET Framework MVC suddividendolo in soluzioni separate.
Un problema che non riesco ancora a risolvere in mia soddisfazione riguarda un set di librerie C # (funzioni statiche, sostituzioni degli attributi di autorizzazione e altre) che devono essere identiche in ogni soluzione. Queste soluzioni vengono inviate al controllo del codice sorgente TFS, il che significa che i progetti collegati all'esterno della soluzione non verranno copiati sul controllo del codice sorgente. In altre parole, tutti i progetti devono essere contenuti all'interno della soluzione.
Questa immagine è un'illustrazione (molto semplificata) di ciò che sto cercando di descrivere. La mia intenzione è quella di avere la "copia master" per la soluzione top "C # .NET Framework Solution". Le altre soluzioni si basano su quelle stesse librerie. Mentre posso "collegarmi" a quelle soluzioni, quell'approccio funziona solo sul PC in cui queste soluzioni sono state create. I progetti collegati all'esterno della soluzione non possono essere spinti (nella mia esperienza) al controllo del codice sorgente.
L'approcciochestousando-chefunzionacomeprevisto-èdimantenerelamia"copia master" delle librerie di classi C # in una soluzione specifica. Ho copiato manualmente i progetti specifici della libreria di classi C # su ciascuna delle soluzioni che ne hanno bisogno. La cosa buona è che poiché il progetto "copiato" esiste nella soluzione, la soluzione può essere trasferita al controllo del codice sorgente nel modo desiderato. La cosa brutta è che questa è una "copia".
La mia unica domanda è questa: c'è un modo per avere il meglio di entrambi i mondi, in cui il progetto di libreria C # esiste nella soluzione, ma se apporto una modifica alla "copia master" tutte le "copie" nel altre soluzioni sono sincronizzate? Perché dovrei volerlo? Immagina se il codice cambia in una o più di quelle librerie e io (o il mio successore) dimentico di apportare tali cambiamenti in tutte quelle altre soluzioni? Cosa succede se commetto un errore in una o più copie?
La mia tecnica attuale è l'unica opzione che ho, o c'è un modo diverso per non rompere il principio di DRY?