Tagarchiv: Mono.Addins

Heute habe ich mir mal einen Webcast zum Thema „Wie erzeuge ich selber Symbol- und Projektvorlagen“ angeschaut. Erstaunlich einfach! Ich habe gleich mal ein Item Template gebaut, mit dem man XML-Dateien für Mono.Addins erzeugen kann.

addintemplate.png

Diese Eintrag erscheint nun wenn man auf ein Projekt rechtsklickt und dann „Hinzufügen | Neues Element“ anwählt. So kann man sich das lästige Eintippen des Grundgerüsts nun sparen.

Installation der Vorlage

1. Zip-Datei hier runterladen

2. Datei verschieben nach „Eigene Dateien/Visual Studio 2005/Templates/ItemTemplates

3. Fertig!

So und jetzt wollen wir natürlich noch sehen, was die Vorlage überhaupt erzeugt (der Name der Datei wurde im Dialog auf „My Addin“ festgelegt):

addinxml.png

Vor ein paar Tagen habe ich die Bibliothek Mono.Addins gefunden, mit der man erweiterbare Anwendung schreiben kann. Das Konzept dahinter ist stark dem Kern von SharpDevelop angelehnt.
Man hat ebenfalls einen Addin-Tree, der alle sogeannten Extension Points enthält. Dies sind die Punkte im Baum, an denen man sich als Addin einklicken kann. Beispielsweise könnte dies der Baumpfad „\Menu\File\“ sein. Ein Addin würde nun innerhalb einer XML-Manifest-Datei eigene Knoten (Extension Nodes) zu diesem Pfad hinzufügen und sich somit bei der Anwendung registrieren. Beim Start der Anwendung werden alle Manifest-Dateien aller Addins eingelesen und zu einem gemeinsamen Baum zusammengefasst. Bei diesem Beispiel würden nun alle Einträge aus dem Pfad „\Menu\File“ ausgelesen werden und auf Basis dieser Daten würde das Menü erzeugt werden.

Insgesamt ist Mono.Addins etwas „sauberer“ programmiert als der Kern von #Develop. Es gibt keine festen Verweise zu log4net oder z.B. zu WindowsForms. Möchte man Features wie das Logging eingebaut haben, kann man diese später noch mit Hilfe von Interfaces innerhalb von Mono.Addins integrieren. Die Bibliothek ist außerdem auch portabel und daher genauso gut für Linux wie für Windows geeignet.

Eine exzellente Referenz befindet sich auf der Mono-Seite hier. Übrigens kann man in Mono.Addins auch fast alles, was man über XML-Dateien beschreibt, auch über Attribute im Code regeln. Eine weitere interessante Option (und auch meine bevorzugte) ist das Integrieren der XML-Beschreibung in die Assembly als eingebettete Ressource.