Wir haben große Schwierigkeiten, unsere Lösungen sinnvoll zu organisieren. Wir haben mehrere Anwendungen. Da es sich um ähnliche Anwendungen handelt, werden viele davon wiederverwendet. Die verschiedenen Anwendungen bieten unterschiedliche Funktionen, je nachdem, wofür unsere verschiedenen Kunden bezahlen.
Wie können wir also die Dinge organisieren? MSDN sagt, dass man sich folgendermaßen organisieren soll:
SolutionFolder\
Proj1Folder\
Proj2Folder\
Proj3Folder\ ...
(Hinweis: Mit Lösungsordner meine ich einen tatsächlichen Ordner auf dem System, nicht einen Visual Studio-Lösungsordner).
Es werden jedoch keine Einzelheiten zu Mehrfachlösungen für die Wiederverwendung von Projekten genannt. Es würde keinen Sinn machen, einen zweiten Lösungsordner zu erstellen und Projekte unter dem ersten Lösungsordner zu referenzieren. Mein erster Gedanke ist, die Lösungen vollständig zu isolieren und dann bei Bedarf auf die Projekte zu verweisen. Ist das sinnvoll? Siehe unten:
Solutions\
Solution1.sln
Solution2.sln
Solution3.sln
Projects\
AFeatures\
AProject1\
AProject2\
AProject3\
BFeatures\
BProject1\
BProject2\
CFeatures\
CProject1\
CProject2\
Im obigen Beispiel habe ich die Projekte nach bestimmten Merkmalen gruppiert. Lösung1 kann die Merkmale A und C enthalten, Lösung2 die Merkmale B und C und Lösung3 die Merkmale A und B. Die Sache wird noch komplizierter, weil jedes Merkmal Untermerkmale haben kann, die nicht in allen Lösungen enthalten sind. Mit anderen Worten, es kann allgemeine AFeatures geben, aber auch spezifischere A-1Features, A-2Features, usw.
Darüber hinaus möchten wir unsere Projekte auf der Grundlage der n-Tier-Architektur gruppieren. Ich könnte mir also vorstellen, dass wir auch die Ordner BusinessServices, DataServices und UserServices in der Mitte hinzufügen. Aber ist es sinnvoll, den n-tier-Ordner über oder unter der Feature-Struktur anzuordnen? An dieser Stelle beginnt mein Gehirn zu spinnen.
In ähnlicher Weise möchten wir unsere Schnittstellen in verschiedenen Projekten haben, dass die Umsetzung. Das ist vielleicht nicht so ein großes Problem. Ich stelle mir vor, dass wir ein AInterfacesProject1 und ein AProject auf der gleichen Verzeichnisebene haben, damit sie nahe beieinander liegen.
Ich würde mich über Kommentare zu meinen Beispielen freuen. Und wenn Sie Erfahrungen mit demselben Problem haben, würde ich gerne wissen, wie Sie es gelöst haben.