Toutes les techniques d’extensibilité de Visual Studio 2008
Enrichir Visual Studio en y incorporant ses propres outils, c’est donner la possibilité à chaque développeur de personnaliser son environnement de développement pour être le plus efficace possible. Les techniques d’extensibilité présentes dans Visual Studio 2005 permettaient déjà de le faire, mais Visual Studio 2008 va plus loin en améliorant ces techniques et en offrant aussi la possibilité de construire un environnement complètement spécifique tout en bénéficiant des fondations de Visual Studio. Un peu d’histoireL’histoire du Shell de Visual Studio remonte à plus de 10 ans aux années 95/97. Elle prend racine dans la nécessité qu’avait Microsoft de rationaliser ses environnements de développement avec la même fondation applicative. Version après version, les différents environnements (VC, VB, VI…) se sont unifiés pour donner Visual Studio tel que nous le connaissons maintenant depuis 2001. La notion d’extensibilité, méthode d’enrichissement de Visual Studio par des fonctionnalités tierces, a toujours existée. Auparavant payant pour les versions 2001 et 2003, l’accès au SDK s’est démocratisé à partir de Visual Studio 2005 pour enfin prendre son plein essor avec la version 2008 qui apporte la possibilité de s’approprier et redistribuer le Shell.
Visual Studio 2008 ShellVisual Studio 2008 Shell, c'est la possibilité de construire ses propres outils de développements et de les distribuer facilement. Auparavant, pour installer des outils de développement tiers ou des extensions basés sur le modèle d'extensibilité de Visual Studio, il fallait nécessairement avoir installé Visual Studio Professionnel ou supérieur, ou obtenir une licence de la version « Partner Premium Edition » qui n'était pas vraiment donnée. Avec le mode Shell, Microsoft donne la possibilité aux développeurs d'extensions de pouvoir les redistribuer gratuitement et sans qu'il y ait nécessairement comme préalable Visual Studio installé. Le Shell supporte deux modes :
La figure ci-dessous montre un exemple d'utilisation du Shell Visual Studio en mode isolé. Cet exemple, appelé StoryBoard, est disponible sur CodePlex et propose un environnement complet et totalement personnalisé composé de DSL (Domain Specific Language), d'un type de projet et de templates spécifiques. Téléchargement : http://www.codeplex.com/storyboarddesigner.
Figure 1 – La fenêtre de bienvenue de l’application StoryBoard, environnement de développement construit sur Visual Studio Shell en mode isolé. Quel que soit le mode que vous choisirez pour développer des extensions à Visual Studio 2008, le Shell vous apporte un ensemble de fonctionnalités homogènes vous permettant d’enrichir l’expérience du développeur de diverses manières : intégration d’un nouveau langage de programmation, un environnement de développement propre à votre métier, un générateur de code intégré et bien d’autres scénarii. La figure ci-dessous montre le positionnement des différentes éditions de Visual Studio ainsi que le Shell en mode intégré ou isolé.
Figure 2 – Les différentes versions de Visual Studio et du Shell. Finalement, pour redistribuer votre application ou outils construits à l’aide du Shell et suivant le mode, vous aurez le choix du :
Toutes les informations sur Visual Studio 2008 Shell sont accessibles sur MSDN : http://msdn2.microsoft.com/vstudio/bb510103.aspx. Enrichir & étendre Visual StudioLe SDK de Visual Studio est un préalable au développement d’extensions quelle que soit l’édition ciblée (Visual Studio, Visual Studio Shell mode intégré et/ou isolé). L’utilisation du SDK ne pourra se faire qu’à partir de l’édition Standard de Visual Studio. Le « Visual Studio 2008 SDK 1.0 » est téléchargeable à partir du portail de l’extensibilité de Visual Studio sur MSDN : http://msdn2.microsoft.com/vstudio/aa700819.aspx. Outre l’aide précieuse qu’il apporte, le SDK est nécessaire dans le développement de « packages ». Voila, nous sommes maintenant parés pour étendre Visual Studio. Mais quelles sont les différentes manières d’enrichir l’environnement de développement ? Il en existe 3 :
Les macrosLes macros sont la manière la plus simple d’étendre Visual Studio via son modèle objet. Les macros sont très pratiques pour automatiser des tâches répétitives. La plupart du temps, le développeur utilise les macros pour reformater le code ou insérer du code répétitif par exemple. Visual Studio fournit un enregistreur de macro qui facilite grandement le développement ou la modification de macros. L’ensemble des fonctionnalités relatives aux macros est accessible par le menu Tools >Macros. Il est possible de voir l’ensemble des macros disponibles (Macro Explorer), d’en enregistrer, d’en éditer ou de les exécuter. L’enregistreur est le moyen le plus simple pour générer le code correspond à la tâche que l’on souhaite exécuter et ensuite de modifier ce code pour l’adapter. De plus, l’enregistreur est un outil qui permettra au développeur de mieux appréhender de manière générale le modèle objet de Visual Studio. La figure suivante montre l’explorateur de macros.
Figure 3 – L’explorateur de macros. Les macros sont exclusivement écrites en VB.NET et n’ont pas accès aux fonctions internes de Visual Studio. Le développeur doit fournir son code pour redistribuer une macro car celui-ci n’est pas compilé et reste donc modifiable. Les add-insLes add-ins, parfois appelés plugins, permettent eux aussi d’avoir accès au modèle objet de Visual Studio dans le même ordre d’idée que les macros. Les add-ins sont écrits dans n’importe quel langage de la plateforme .NET et sont compilés, ce qui permet de dépasser la limitation des macros pour la redistribution. Lorsque l’on développe un add-in, nous avons accès à un objet « racine » appelé DTE/DTE2 qui permet d’accéder ensuite à tout le modèle objet de Visual Studio. Vous pouvez éditer une macro comme expliqué précédemment pour en comprendre son utilisation. Le modèle objet est visible sous la forme d’un poster http://msdn2.microsoft.com/library/za2b25t3(VS.80).aspx. Il existe beaucoup d’add-ins disponibles en téléchargement sur le Web et qui permettent de faire d’innombrables choses : des add-ins d’intégration d’outils externes à Visual Studio, des add-ins de génération de code, des add-ins d’optimisation du code, … Des sites Web référencent la plupart d’entre eux et notamment le site Visual Studio Hacks : http://www.visualstudiohacks.com/type/addins. Comment créer son propre add-in dans Visual Studio 2008 ? Rien de plus simple :
Le code de la méthode Exec est modifié de la manière suivante pour faire apparaître un message : if(executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault) { if(commandName == "MyHelloWorldAddin.Connect.MyHelloWorldAddin") { MessageBox.Show("Hello World"); handled = true; return; } } Pour tester notre add-in, il suffit juste d’exécuter notre projet en mode debug (F5 ou menu Debug > Start Debugging), ce qui a pour effet de lancer un second Visual Studio. Par défaut, votre add-in se trouvera dans le menu Tools si vous n’avez pas modifié le code de la méthode OnConnection.
Figure 4 – Exemple d’add-in Il existe des exemples plus complets et notamment l’exemple d’implémentation d’un add-in qui convertit le code C# vers Visual Basic (http://msdn2.microsoft.com/en-us/magazine/cc163652.aspx). Pour contrôler le chargement des add-ins Visual Studio, il existe un gestionnaire d’add-in accessible par le menuTools > Add-in Manager. Vous pouvez ensuite redistribuer votre add-in en créant un projet Setup pour générer une installation de type MSI. Les VSPackagesLes VSPackages représentent le mécanisme de plus bas niveau disponible au développeur pour étendre Visual Studio. Plus complexes, mais plus puissants, ils permettent d’exploiter les services de Visual Studio comme le font les packages C# ou VB.NET ; En fait les éditeurs, barres de commandes, etc. que nous voyons dans Visual Studio sont eux-mêmes des VSPackages. Auparavant, ce mode d’extensibilité n’était accessible qu’au développeur C++ mais depuis la version 2005 il est possible d’interopérer avec les classes natives de Visual Studio à partir des langages .NET soit en utilisant les classes d’interopérabilité soit en utilisant le Managed Package Framework (MPF). Tout comme pour la création d’add-in, Visual Studio fournit un assistant de création de Package. Dans ce cas, le type de projet à utiliser est « Visual Studio Integration Package ». Un VSPackage vous permet d’ajouter des informations sur votre outil dans la fenêtre d’accueil de Visual Studio, d’implémenter un nouveau langage de programmation, de modifier le comportement d’éditeurs de code existants, etc. Tout ceci est possible grâce aux fonctionnalités mises à disposition par le Shell et les autres VSPackages, comme :
Pour redistribuer un VSPackage, vous aurez besoin d’une clé de chargement appelée Package Load Key (PLK). Cette clé vous sera fournie par Microsoft via l’inscription au programme partenaire VSIP accessible sur le site Web suivant : http://www.vsipmembers.com/Anonymous/Default.aspx. Il existe plusieurs exemples d’extensibilité de Visual Studio par de nouveaux types de projets ou l’enrichissement d’existants, de nouveaux outils, etc. Voici 2 exemples de nouveautés fournies par Microsoft qui viennent enrichir Visual Studio pour développer des applications Web : Popfly et Volta, une technologie alpha pour développer des applications Web multi-tiers (Silverlight, Javascript, .NET…).
ConclusionAvec l’arrivée de la version 2008 de Visual Studio, ce sont de nouvelles capacités d’extensibilité qui s’offrent aux développeurs. L’objectif des extensions (add-ins, VSPackages…) de Visual Studio est généralement d’améliorer la productivité et l’efficacité des développeurs, d’enrichir les possibilités avec, par exemple, de nouveaux langages de programmation (exemple de IronPython) ou de nouveaux types de projets. C’est tout un écosystème (communauté VSX) qui se met en place autour du métier de développeur en lui apportant un nouvel aspect et un nouvel intérêt et qui permet à chacun de se forger les outils qui lui sont adaptés.
Références
|