Una considerazione per questo è quanto frequentemente vengono riutilizzate le librerie citate. Se tendono ad essere utilizzati in progetti completamente diversi, devi stare attento a non dipingerti in un angolo, dove scopri che le modifiche apportate tre settimane fa alla libreria per supportare alcune nuove app si sono rivelate in grado di rompere i cambiamenti per alcune altre applicazioni.
Fondamentalmente quello che sto dicendo è che non si vuole resistere alla tentazione di apportare modifiche a una biblioteca, volenti o nolenti; meglio non mettere quella tentazione di fronte a te in primo luogo. Se una libreria è progettata per il riutilizzo, tutte le modifiche significative ad essa devono essere progettate e implementate con molta attenzione e sottoposte a test approfonditi con tutte le librerie/app dipendenti da. Diventa molto più difficile adottare un approccio disciplinato quando hai letteralmente la fonte di fronte a te, in attesa di essere modificata.
Il mio approccio è creare soluzioni delle librerie correlate ; per esempio, potrei avere un assembly per le interfacce core e le classi astratte, alcuni altri assembly per diverse implementazioni concrete, un altro per i test unitari e così via. Se ci sono strati di librerie riutilizzabili dipendenti, spesso vengono tutte raggruppate nella stessa soluzione.
Ma si ferma a livello di applicazione. Qualsiasi progetto che non è sempre che viene distribuito con le librerie principali non condivide una soluzione, fa semplicemente riferimento alla DLL compilata. Mi costringe a essere disciplinato sui cambiamenti di libreria e non a modificarlo per supportare alcune funzioni specifiche dell'interfaccia utente.
Non so se questo è l'approccio "giusto", ma sono stato morso prima apportando modifiche premature alle librerie senza testare correttamente le dipendenze, ed è sempre stato il risultato di essere troppo concentrato su una singola app e non pensare agli effetti collaterali. La mia opinione è che quando si lavora su una libreria, è necessario concentrarsi sulla libreria stessa e non su come viene utilizzata in un particolare scenario.
Buon punto sui simboli - e tu hai ragione riguardo alla velocità, ho un paio di progetti che richiedono un po 'di tempo per caricare e compilare. –