Sto cercando alcuni consigli su come dovrei organizzare un nuovo grande progetto su cui sto lavorando per consentirmi di gestirlo più facilmente in Git (usando GitLab) e sviluppato in Visual Studio.
Per dare un'idea di scala, questo è un intero backend del server che consisterà in alcuni servizi di rete (socket), servizi di elaborazione dati e servizi web. Ognuno di questi servizi sarà un progetto individuale, ma ci sarà un sacco di codice comune che voglio separare e tra loro (cioè gli assembly condivisi).
Quindi diciamo che ho i seguenti progetti di Visual Studio, con le dipendenze mostrate:
Utility
SharedSocketCode - [ Utility ]
SocketServiceA - [ SharedSocketCode ]
SocketServiceA.WindowsServiceHost - [ SocketServiceA ]
SocketServiceA.ConsoleHost - [ SocketServiceA ]
SocketServiceB - [ SharedSocketCode ]
SocketServiceB.WindowsServiceHost - [ SocketServiceB ]
SocketServiceB.ConsoleHost - [ SocketServiceB ]
DbEntityModel
DataLogServiceA - [ DbEntityModel, Utility ]
DataLogServiceB - [ DbEntityModel ]
SharedWebServiceCode
WebServiceA - [ SharedWebServiceCode, DbEntityModel ]
WebServiceB - [ SharedWebServiceCode, DbEntityModel ]
Come puoi vedere, ci sarà un sacco di codice condiviso, e questa è solo la punta dell'iceberg! Sono combattuto tra l'archiviazione di tutto questo nello stesso repository, o cercando di dividerli in singoli.
Il primo sembra più facile da gestire in quanto non dovrò lottare con Visual Studio alla ricerca di codice condiviso in quelle che potrebbero essere posizioni diverse sulla versione locale di ciascun utente - i progetti verranno tutti memorizzati in modo prevedibile a livello di soluzione.
Quest'ultimo suona come mi darà più controllo sulla versione di ogni componente e separando logicamente quello che altrimenti sarebbe un singolo codice base di mammoth.
Sono abbastanza nuovo per Git e GitLab, quindi non sono sicuro se c'è qualcosa che può aiutare con questo tipo di scenario. Qualsiasi consiglio sarebbe benvenuto.
(FYI, ho aggiunto il tag GitHub perché ritengo che sia ragionevolmente simile a GitLab, quindi potrebbe esserci qualche assistenza che posso ottenere dai suoi utenti)