Jens HäupelPlatform Strategy ManagerMicrosoft Deutschland GmbH These postings are provided "AS IS" with no warranties, and confer no rights. Use of included code samples are subject to the terms specified at Microsoft - Information on Terms of Use
Auf der in Los Angeles Ende Oktober stattgefundenen Professional Developers Conference wurden ein paar Geheimnisse um die nächste Version von VSTO gelüftet. Eigentlich heißt es ja nicht mehr VSTO, da schon seit VS 2008 VSTO Bestandteil von Visual Studio ist, aber die Abkürzung hat sich seit der Einführung verbreitet und viele können sich etwas darunter vorstellen.
Was wird also an Neuem kommen?
Zum einen war es bisher ein Problem, wenn mehr als ein Projekt (oder besser Einzellösung) an der gesamten VSTO Solution beteiligt war, alle DLL per ClickOnce zu verteilen. Ich meine damit nicht, dass verschiedene Assemblies verwendet werden, um eine Solution (z.B. eine Outlook Form Region) zu verteilen, sondern dass eine Lösung mehrere Entry Points enthält (z.B. mehrere Add-Ins für die gleiche oder gar unterschiedliche Office Anwendungen).
Dafür mußte bisher entweder ein MSI Package gebaut oder alle Add-Ins einzeln verteilt werden. Dank Multi-Project Deployment gehört das der Vergangenheit an. Es können im Zuge eines Update-Prozesses auch einzelne Add-Ins aus dem Gesamt Package entfernt oder dazu hinzugefügt werden. Um das zu erreichen wurde die Möglichkeit geschaffen, mehrere Entry Points im Application Manifest zu definieren. In der Registry würde das Ganze dann so aussehen:
HKCU\Software\Microsoft\Office\Excel\AddIns\MyChartingAddIn\
manifest = MyProject.vsto|id=MyChartingAddIn
HKCU\Software\Microsoft\Office\Excel\AddIns\MyCalculationAddIn\
manifest = MyProject.vsto|id=MyCalculationAddIn
Post Deployment Custom Actions
Hin und wieder ist es nötig, innerhalb des ClickOnce Processes eigene Aktionen auszuführen. Was im Windows Installer als Custom Action bekannt ist, wird nun auch (limitierter Form) bei ClickOnce möglich sein. Limitiert deshalb, weil ClickOnce im User Context ausgeführt wird (MSI läuft unter LocalSystem). Aus diesem Grunde sind die Aktionen auch auf alles limitiert, was der angemeldete Benutzer darf. Process Elevation ist nicht erlaubt. Ausgeführt wird der eigene Code unmittelbar nachdem die Anwendung in den ClickOnce Download Cache geladen wurde. Basierend auf dem Installationsstatus (InitialInstall, UnInstall, Update, Rollback) kann die jeweilige Aktion definiert werden. Ebenso wie bei den Custom Actions des MSI sollte man auch hier darauf achten, die Änderungen in der entgegen gerichteten Action wieder zurück zu nehmen.
No more PIA Mode
Primary Interop Assemblies müssen in der nächsten Version von VSTO nicht mehr unbedingt mit verteilt werden, da der Compiler in der Lage sein wird, die Definitionen der verwendeten Typen aus den PIAs im Code einzubetten (Type embedding).
Das ist eine generelle Funktionaliät des C# 4.0 Compilers und nicht unbedingt VSTO-bezogen.
Eine weitere Änderung des C# Compilers ist die Fähigkeit, optionale und benannte Parameter zu unterstützen (VB-Programmierer dürfen jetzt lachen). Also statt des wirklich Schrecklichen:
Excel.Workbook wb = xlApp.Workbooks.Open(FilePath, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing);
würde es so aussehen:
Excel.Workbook wb = xlApp.Workbooks.Open(FilePath);
oder bei mehreren verwendeten Parametern:
Excel.Workbook wb = xlApp.Workbooks.Open(Filename: FilePath, Password: myPassword, Local: true);
Anders Hejlsberg meinte, er hat endlich den vielen Anfragen nach diesem Feature nachgegeben.
Wer sich jetzt immer noch nicht dazu durchgerungen hat, zum TechSummit (19.-21.11.2008) nach Berlin zu kommen, sollte mal weiter lesen. Wir haben 4 Program Manager aus Redmond nach Berlin geholt und sie wollen mit Ihnen sprechen (und nicht nur zu Ihnen). Es wären da:
Paul Yuknewicz (VB.net , Data centric applications, VB6 Migration)
John Durant (Mr. SharePoint Development - muß ich mehr sagen?)
Steve Teixera (Parallel Development Tools Team)
Marian Luparu (C++ IDE Team)
Wenn Sie also mal Ihre Deganken zu den gennnten Themen teilen oder einfach mal über die Zukunft philosophieren wollen - senden Sie mir einen kurzen Abstract von sich selbst und dem Thema, ich organisiere ein Meeting.
(Das gilt besonders für Projektleiter, Architekten und CTOs)