Hallo!
Ich habe ein Programm in C# (VS 2005) geschrieben, welches ein Freund von mir mit diversen Erweiterungen versehen hat. Wir arbeiten zusammen in einem SubVersion-Repository. Allerdings ist sein Code in einem eigenen Projekt "PlugIns" in der Projektmappe, so dass es in eine eigene DLL compiliert wird.
Im Hauptprogramm werden einfach nur 3 Klassen (eine für jedes Plugin) instanziert.
Dieses Vorgehen ist allerdings mittlerweile sehr unschön, da die PlugIns und das Hauptprogramm sehr verwachsen sind:
- alle 3 PlugIns stecken in einer DLL
- es wird immer alles zusammen kompiliert
- es gibt keine Versionsnummern für die PlugIns
- es lassen sich PlugIns und Hauptprogramm nicht unabhängig voneinander updaten und ausliefern
- ...
Wir möchten hin zu einer "echten" PlugIn-Architektur:
- Das Hauptprogramm soll ein Unterverzeichnis "plugins" haben und hier selbstständig die PlugIns finden und starten.
- jedes PlugIn soll eine eigene Datei sein und eine eigene Versionsnummer haben
- beim Starten soll ein PlugIn prüfen ob die Versionsnummer des Hauptprogramms zur Versionsnummer des PlugIns passt
- ...
Doch jetzt stellt sich die Frage wie man dieses Ziel erreicht?
Könnt ihr mir vielleicht ein paar Tipps geben?
Ich glaube das Thema nennt sich auch "late binding", weil das Hauptprogramm ja erst zur Laufzeit nachsehen kann welche PlugIns es starten soll. Und die PlugIns erst zur Laufzeit erfahren welche Version des Hauptprogramms sie genau als Basis haben.
Doch wie setzt man dies in der Praxis am besten um?