Hallo ihr lieben Leute, hätte da mal eine Frage, bezüglich Solutions, Projekten und Git-Repos.
Ich habe hier eine Solution, in der befinden sich, historisch bedingt, 34 Projekte, allesamt Bibliotheken, wobei manche Projekte quasi dreimal vorkommen. Falls ihr euch fragt, "wieso?", das liegt daran, dass wir eine Hauptanwendung haben, die noch in .NET 4 Entwickelt wird, es aber bereits Tools gibt, die mit .NET 4.5 Entwickelt wurden und ich natürlich von
Die eigentlichen Code-Dateien liegen nur in den .NET 4 Projekten, in den anderen Projekten sind sie verlinkt, und mithilfe von Kompilersymbolen, schalte ich features für die jeweilige .NET Version ein und aus. Natürlich gibt es innerhalb der Bibliotheken verweise untereinander.
Nun zur eigentlichen Frage. Ich bin dabei das ganze neu aufzusetzen, da die Hauptanwendung einen kompletten Re-write bekommt, der in .NET 6 stattfinden wird. Dadurch werden die alten .NET 4 und .NET 4.5 Bibliotheken nicht mehr benötigt, sodass nur noch die .NET Standard Libraries übrig bleiben. Jetzt stellt sich aber die Frage, hauptsächlich aus organisatorischen, und Versionierungsgründen, wie ich das aufziehe.
Wie bereits gesagt, liegen im moment 34 Projekte in einer Solution, von denen ich jetzt jedoch nur noch 12 benötige. Das ist zwar nett, da ich dadurch schön kleine DLLs hab, die sich einzeln, oder je nach gebrauch eben einbinden lassen, jedoch befindet sich alles in einem Git-Repo, und ich würde am liebsten jedem Projekt seine eigene Version geben, was jedoch in Git mit tausenden labels enden wird, da ich für jedes der 12 Projekte eigene Versionslabel bräuchte.
Dann habe ich mir überlegt, dass ich ja evtl. jedes Projekt seine eigene Solution geben könnte, sodass jedes Projekt sein eigenes Git-Repo hat, jedoch finde ich das wieder unübersichtlich, da ich nun 12 verschiedene Repos pfelegen muss.
Zuletzt, und das habe ich mal testweise umgesetzt, habe ich die 12 Projekte in einem vereint, sodass ich nur noch ein Repo, mit einer Solution, und einem Projekt, und somit auch nur einer Version habe. Das ist zwar organisatorisch ein Träumchen, jedoch sehe ich hier wiederum das Problem, das man nun nurnoch eine "fette" Bibliothek hat, die man einbinden muss, egal welchen Teil man davon nun benötigt. Zudem, wenn man nun diese Bibliothek einbindet, und versehentlich auf einen Teil zugreift, ohne die nötigen Dependencies einzubinden (Bspw. Datenbankprovider), endet das erstmal in einer schönen Exception.
Was denkt ihr ist hier der beste Ansatz? Habt ihr noch weitere Ideen?
Ich habe hier eine Solution, in der befinden sich, historisch bedingt, 34 Projekte, allesamt Bibliotheken, wobei manche Projekte quasi dreimal vorkommen. Falls ihr euch fragt, "wieso?", das liegt daran, dass wir eine Hauptanwendung haben, die noch in .NET 4 Entwickelt wird, es aber bereits Tools gibt, die mit .NET 4.5 Entwickelt wurden und ich natürlich von
async/await
und anderen Sachen gebrauch machen wollte, und dann gibt es noch eine Xamarin App, die dann natürlich .NET Standard 2.0 erfordet für Bibliotheken. Die eigentlichen Code-Dateien liegen nur in den .NET 4 Projekten, in den anderen Projekten sind sie verlinkt, und mithilfe von Kompilersymbolen, schalte ich features für die jeweilige .NET Version ein und aus. Natürlich gibt es innerhalb der Bibliotheken verweise untereinander.
Nun zur eigentlichen Frage. Ich bin dabei das ganze neu aufzusetzen, da die Hauptanwendung einen kompletten Re-write bekommt, der in .NET 6 stattfinden wird. Dadurch werden die alten .NET 4 und .NET 4.5 Bibliotheken nicht mehr benötigt, sodass nur noch die .NET Standard Libraries übrig bleiben. Jetzt stellt sich aber die Frage, hauptsächlich aus organisatorischen, und Versionierungsgründen, wie ich das aufziehe.
Wie bereits gesagt, liegen im moment 34 Projekte in einer Solution, von denen ich jetzt jedoch nur noch 12 benötige. Das ist zwar nett, da ich dadurch schön kleine DLLs hab, die sich einzeln, oder je nach gebrauch eben einbinden lassen, jedoch befindet sich alles in einem Git-Repo, und ich würde am liebsten jedem Projekt seine eigene Version geben, was jedoch in Git mit tausenden labels enden wird, da ich für jedes der 12 Projekte eigene Versionslabel bräuchte.
Dann habe ich mir überlegt, dass ich ja evtl. jedes Projekt seine eigene Solution geben könnte, sodass jedes Projekt sein eigenes Git-Repo hat, jedoch finde ich das wieder unübersichtlich, da ich nun 12 verschiedene Repos pfelegen muss.
Zuletzt, und das habe ich mal testweise umgesetzt, habe ich die 12 Projekte in einem vereint, sodass ich nur noch ein Repo, mit einer Solution, und einem Projekt, und somit auch nur einer Version habe. Das ist zwar organisatorisch ein Träumchen, jedoch sehe ich hier wiederum das Problem, das man nun nurnoch eine "fette" Bibliothek hat, die man einbinden muss, egal welchen Teil man davon nun benötigt. Zudem, wenn man nun diese Bibliothek einbindet, und versehentlich auf einen Teil zugreift, ohne die nötigen Dependencies einzubinden (Bspw. Datenbankprovider), endet das erstmal in einer schönen Exception.
Was denkt ihr ist hier der beste Ansatz? Habt ihr noch weitere Ideen?