Tutorial07 - Versionsunabhängige Entwicklung

Office Lösungen in .NET zu erstellen und dabei unabhängig von einer oder bestimmten Office Versionen zu bleiben ist ein wichtiges Anliegen von NetOffice. Darüber hinaus möchte NetOffice versionsunabhängige Entwicklung mehr als einfach nur möglich zu machen. Als Entwickler bekommen Sie von NetOffice zusätzlich folgende Unterstützung.

IntelliSense Text

Als Entwickler kennen Sie die IntelliSense Unterstützung von Visual Studio. Ein Tooltip Text der Ihnen hilfreich zur Seite steht, Ihnen die Bedeutung und richtige Verwendung von Parametern erklärt und Sie über mögliche Exceptions informiert. NetOffice darf die Entwickler-Dokumentation von MS-Office aus rechtlichen Gründen nicht als IntelliSense anbieten. Jedoch bekommen Sie im IntelliSense für alle NetOffice Klasse, Enums, etc. angezeigt von welchen Office Versionen die Funktionalität angeboten wird.

Schaubild
IntelliSenseVB


Prüfung zur Laufzeit ob eine Methode oder Property in der Office Version verfügbar ist

Wenn Sie wissen das ein bestimmtes Property von einer bestimmten Version Ihrer Office Anwendung nicht angeboten wird ist es hilfreich zur Laufzeit zu prüfen ob dieses Property oder Methode zur Verfügung steht. Im simpelsten Fall können Sie dies einfach gegen die Version der Anwendung prüfen. In NetOffice bietet Ihnen jedoch jedes Objekt dafür die Methode EntityIsAvailable an.

Betrachten Sie dazu folgendes Codebespiel mit MS-Outlook und NetOffice.

Listing 1.0

Dim outlookApplication As Outlook.Application = new Outlook.Application()
Dim mailItem As Outlook.MailItem = outlookApplication.CreateItem(OlItemType.olMail)

If mailItem.EntityIsAvailable("BodyFormat") Then
    mailItem.BodyFormat = OlBodyFormat.olFormatPlain 
End If

mailItem.Display()

Sie können erkennen das wir die das Property BodyFormat zur Laufzeit prüfen da es von Outlook 2000 nicht unterstützt wird. Sofern dieses Property nicht unterstützt wird übergehen wir es einfach da dies sicher kein grösseres Problem darstellt. Was macht diese Prüfung besser als eine Prüfung gegen die Version einer Anwendung? Antwort: Sollte ein Property oder Methode von mehreren Office Versionen nicht unterstützt sein müssen Sie mehr Code für eine Prüfung schreiben, ausserdem gibt es Fälle wo Microsoft bestimmte Funktionalitäten z.B. im Rahmen eines Service Packs für ältere Office Versionen nachgerüstet hat. NetOffice prüft intern nicht gegen die Version einer Anwendung sondern fragt den zugrunde liegenden COM Server gezielt nach der gewünschten Funktionalität. In unserem Beispiel bekommen damit möglicherweise mehr Benutzer das BodyFormat gesetzt als bei einer harten Prüfung gegen die Version.


NetOffice Developer Toolbox

Die NetOffice Developer Toolbox ist ein Service Tool für .NET Entwickler das bei einigen typischen und alltäglichen Problemen hilfreich zur Seite steht. Die zentrale Motiation für die Toolbox ist jedoch eine Fuktionalität die es Ihnen erlaubt Ihr Assemly(*.dll oder .exe) von der Developer Toolbox analyiseren zu lassen. Wenn Sie ein Addin erstellen z.B. MyAddin.dll wird die Toolbox Ihr Addin für Sie analysieren und Ihnen aufzeigen mit welchen Office Versionen Ihr Addin kompatibel ist. Das Programm durchsucht Ihren Code und analysiert alle Aufrufe die mit NetOffice in Verbindung stehen. Sie bekommen einen detailierten Report an welcher Stelle Aufrufe zu NetOffice stattfinden und wo (sofern vorhanden) Inkompatibilitäten exisierten. Auch wenn die Developer Toolbox die Kompatibilitätsprüfung für Sie übernimmt, befreit Sie das nicht davon Ihr Office Lösung mit  den unterstützen Office Versionen zu testen. Möglicherweise reagiert eine Office Anwendung nicht exakt in der gleichen Weise wie eine frühere Office Version.

 

Die 3 beschriebenen Funktionalitäten bieten Unterstützung für die Phasen Entwicklungszeit, Laufzeit und die Phase vor der Auslieferung einer Lösung. 

Nachstehend sehen Sie eine Übersicht der verschiedenen Versions-Attribute für das SupportByVersion Attribute.

  Version Attribute Type Library
Office      
  Office 2000 09 Microsoft Office   9.0 Object Library
  Office 2002 10 Microsoft Office  10.0 Object Library
  Office 2003 11 Microsoft Office  11.0 Object Library
  Office 2007 12 Microsoft Office  12.0 Object Library
  Office 2010 14 Microsoft Office  14.0 Object Library
       
Excel      
  Excel 2000 09 Microsoft Excel  9.0 Object Library
  Excel 2002 10 Microsoft Excel  10.0 Object Library
  Excel 2003 11 Microsoft Excel  11.0 Object Library
  Excel 2007 12 Microsoft Excel  12.0 Object Library
  Excel 2010 14 Microsoft Excel  14.0 Object Library
       
Word      
  Word 2000 09 Microsoft Word  9.0 Object Library
  Word 2002 10 Microsoft Word 10.0 Object Library
  Word 2003 11 Microsoft Word 11.0 Object Library
  Word 2007 12 Microsoft Word 12.0 Object Library
  Word 2010 14 Microsoft Word 14.0 Object Library
       
Outlook      
  Outlook 2000 09 Microsoft Outlook  9.0 Object Library
  Outlook 2002 10 Microsoft Outlook 10.0 Object Library
  Outlook 2003 11 Microsoft Outlook 11.0 Object Library
  Outlook 2007 12 Microsoft Outlook 12.0 Object Library
  Outlook 2010 14 Microsoft Outlook 14.0 Object Library
       
PowerPoint      
  PowerPoint 2000 09 Microsoft PowerPoint  9.0 Object Library
  PowerPoint 2002 10 Microsoft PowerPoint 10.0 Object Library
  PowerPoint 2003 11 Microsoft PowerPoint 11.0 Object Library
  PowerPoint 2007 12 Microsoft PowerPoint 12.0 Object Library
  PowerPoint 2010 14 Microsoft PowerPoint 14.0 Object Library
       
Access      
  Access 2000 09 Microsoft Access  9.0 Object Library
  Access 2002 10 Microsoft Access 10.0 Object Library
  Access 2003 11 Microsoft Access 11.0 Object Library
  Access 2007 12 Microsoft Access 12.0 Object Library
  Access 2010 14 Microsoft Access 14.0 Object Library

Last edited May 13, 2012 at 7:45 PM by SebastianDotNet, version 11