Outlook erweitern

Mit der Einführung von Visual Studio 2005 hat Microsoft auch eine neue Version der Visual Studio Tools für Office (VSTO) vorgestellt. Eine der in dieser Version realisierten Neuerungen erlaubt es, Outlook-Add-Ins zu erstellen.

In den ersten beiden Teilen dieser Serie wurden die wichtigsten technischen Grundlagen von Office-Add-Ins vorgestellt. Bei Add-Ins handelt es sich um COM-Objekte, die eine generische Schnittstelle implementieren. Über diese erweitern sie die Funktionalität der Office-Anwendungen. Durch die Verwendung einer allgemein angewendeten Technologie lassen sich Add-Ins von den verschiedenen Office-Anwendungen und einer Reihe anderer Programme wie beispielsweise Visual Studio laden. Zur Erweiterung welcher Programme ein Add-In gedacht ist und wann es geladen wird, wird nur durch Registry Einträge festgelegt.

Zentraler Punkt eines COM-Add-Ins ist die IDTExtensibility2-Klasse. Sie muss für die Einhaltung der Schnittstelle implementiert werden. Sie besitzt neben Funktionen, die zu verschiedenen Zeitpunkten des Ladens und Entladens des Add-Ins aufgerufen werden, eine Reihe von Ereignisroutinen. Diese lassen sich mit einzelnen Objekten verknüpfen und werden beispielsweise dann ausgeführt, wenn ein verknüpftes Objekt gespeichert wird.

Es wurde im zweiten Teil dargestellt, dass auch die neuen .NET-Add-Ins noch auf die COMSchnittstelle zurückgreifen. Die .NET-Klasse, die für die Erweiterung implementiert werden muss, ist mehr oder weniger deckungsgleich mit der notwendigen COM-Klasse IDTExtensibility2. Für die Umsetzung der Funktionsaufrufe zwischen der .NET- und der COM-Umgebung sorgt eine Zwischenschicht, die über einen in Visual Studio .NET enthaltenen Assistenten automatisch erstellt werden kann.

Allerdings ist gerade die Erstellung von Add-Ins für Outlook mit einer Reihe von Problemen behaftet, die es sehr schwierig machen, stabile Software zu entwickeln. Bereits die COM-Schnittstelle von Outlook selbst zeigt einen Designfehler, der bei der Implementierung der Funktionen zur Beendigung des Add-Ins zu einer Endlosschleife führen kann. Die Lösung hierzu wurde in Teil 1 beschrieben.

Auch die Programmierung der Office-Objektbibliothek bereitet einige Schwierigkeit. Office ist ebenfalls ursprünglich ein COM-Objekt, auf das eine .NET-Klassenhierarchie aufgesetzt wurde. Dieser Aufsatz besteht aus den so genannten Primary Interop Assemblies (PIAs). Sie sind in Dateien gespeichert, die entweder zentral im System oder in den Anwendungsverzeichnissen liegen können. Problematisch daran ist, dass es für die verschiedenen Office-Versionen eigene PIAs mit gleichem Namen gibt. Hierdurch kann es zu Versionsproblemen kommen.

Weitere Probleme macht der Übergang zwischen .NET-Add-Ins und der zugrunde liegenden COM-Klasse. Über den Visual Studio-Assistenten erstellte Add-Ins verwenden ein und dasselbe Ladeprogramm. Hierdurch kommt es in der Praxis zu ungewollten Wechselwirkungen zwischen gleichzeitig geladenen Office-Add-Ins.

Um diesem Problem zu begegnen, hat Microsoft das so genannte Shim-Konzept entwickelt. Diese Shims stellen eigenständige Laderoutinen für Add-Ins bereit. Shims lassen sich für bestehende Add-Ins mit Hilfe eines über MSDN verfügbaren Assistenten ohne Softwareunterstützung seitens Microsoft erstellen.

Visual Studio 2005

Vor diesem Hintergrund hat Microsoft im November 2005 Visual Studio 2005 und die Visual Studio Tools for Office 2005 (VSTO 2005) herausgebracht.

Bild 1: Der generische Add-In- Assistent ist auch in der „normalen“ Visual Studio- Version weiter vorhanden.
Bild 1: Der generische Add-In- Assistent ist auch in der „normalen“ Visual Studio- Version weiter vorhanden.

Visual Studio 2005 bietet weiterhin einen Assistenten für die Erstellung von generischen Add-In-Projekten an. Dieser entspricht funktional im Wesentlichen dem Assistenten aus Visual Studio .NET 2003. Mit dem Assistenten erstellte Programme werden leider immer noch von einem einzelnen Ladeprogramm gestartet, das heißt, sie besitzen keine eigene Shim. Nur auf die automatische Installation der Office PIAs im Rahmen des mit erstellten Microsoft Installer-Projekts wurde verzichtet. Hier muss der Entwickler bzw. der Endanwender sicherstellen, dass auf den Rechnern die passenden Dateien vorhanden sind. Das lässt sich durch Aktivierung der Option .NET-Programmierunterstützung im Office-Installationsprogramm
für die einzelnen Anwendungen realisieren. Damit diese Option angezeigt wird, muss vorher die .NET Framework Runtime installiert sein. Die PIAs müssen auf jedem Rechner installiert werden, auf dem ein .NET-Add-In ausgeführt werden soll.

Die Visual Studio Tools für Office haben bereits in der letzten Visual Studio-Version die Entwickler-Edition von Office abgelöst. Neu an der gerade erschienenen Version ist, dass sich neben Add-Ins für Word und Excel auch Outlook-Projekte damit erstellen lassen. VSTO ist nicht in der Professional-Version von Visual Studio 2005 enthalten, sondern wird als Zusatzprodukt vertrieben. Die größeren Versionen (Team System) enthalten VSTO bereits. Für Besitzer der Professional-Version mit MSDN-Abonnement ist VSTO als Download im MSDN kostenlos verfügbar. Ersatzweise kann VSTO auch als Einzelprodukt erworben werden. Die Visual Tools machen sich nach der Installation durch neue Projektzweige (Office) für Visual Basic und Visual C# bemerkbar.