Auch Forms kann man ohne weiteres in
DLL's auslagern... Und eigentlich ist das der Königsweg.
Hrm.. andere Alternativen...
Sehr, sehr, sehr unschön: Alle Funktionalitäten in ein Programm einbauen und je nach Konfiguration im Programmverlauf eben anstelle von Form X halt Form Y laden...
Problematisch wird es, wenn sich tatsächlich grundlegende Funktionalitäten ändern und man auch nur eine kleine Sonderbehandlung bei Kunde xyz vergisst: Das führt zu ganz unschönen Bugs, die extrem schwer zu lokalisieren sind und schlimmstenfalls sogar den Datenbestand gefährden.
Bevor man das anfängt ist es wirklich besser: Ein Build pro Kunde. Das kann man noch relativ gut mit automatisierten Build-prozessen handhaben, wenn man eine gemeinsame Codebasis hernimmt und die Änderungen für einen bestimmten Kunden per DIFF integriert.
Will heissen: Originalsourcen nehmen - Kundenänderung einbauen - diff gegen Original fahren und ablegen.
Beim Build-Prozess dann immer Originalsourcen hernehmen, build, diff Kunde 1 laufen lassen, build, originalsourcen hernehmen, diff Kunde 2 laufen lassen, build... Dauert etwas länger, und man muss natürlich aufpassen dass man wenn man den originalstand ändert auch alle diff's zu aktualisieren und ggf. in einigen Ständen nochmal von Hand nachzuarbeiten, aber das ist deutlichst weniger Buganfällig als alles in ein Projekt einzubauen.
*brrr* Da schaudert es mir schon bei dem Gedanken sowas verwalten zu müssen...
Nein: Die richtige und sichere und am einfachsten zu verwaltende Methode ist sicher die mit den in Module ausgelagerte
DLL's. Und natürlich kannst Du auch in eigene
DLL's reindebuggen und das aus der
IDE raus lauffähig zu haben. Haben wir mit einem Projekt mit einem Gesamtumfang von ca. 1,6 Million Zeilen damals auch gehabt. Alles andere wäre projekttechnischer Selbstmord.