DSL Factory

La communauté francophone autour des DSL Tools, et de l'extensibilité Visual Studio
The French-speaking community about DSL Tools and Visual Studio Extensibility
Bienvenue à DSL Factory Identification | Inscription | Aide
dans
Accueil Blogs Forums Photos Fichiers Roller

Jean-Marc

  • Le progamme VSIP ... plus intéressant que ce que je ne pensais avant d'être chez MS

    Avant d’être chez Microsoft, je pensais que le programme VSIP (Visual Studio Industry Partner), c’était plutôt pour l’aspect marketing, et pour des d’entreprises qui voulaient vendre leur produit avec Visual Studio, et profiter d’une synergie de vente avec Microsoft. Cet aspect existe.

    Mais il existe également un volet technique à ce programme, qui pourrait bien vous intéresser si vous vous lancez sérieusement dans l’extensibilité Visual Studio.


    Si on voulait faire l’historique du programme VSIP, il faudrait dire qu’au début, pour télécharger le VS SDK, il fallait être membre du programme VSIP. Il y avait alors 3 niveaux : Affiliate (membre de base, sans frais d’entrée dans le programme), Alliance et Premium.
    Aujourd’***, le VS SDK est librement téléchargeable, ainsi que les ressources pour l’exploiter. En effet, en plus des entreprises qui créent des produits commerciaux autour de Visual Studio (c’était la raison d’être initiale de VSIP), Microsoft veut également aider techniquement les organisations, les communautés techniques ou les individus, qui veulent étendre Visual Studio et distribuer les extensions a l’intérieur de leur organisation, ou tout simplement, par hobby (si ! si ! ca existe !). C’est tout là qu’est la mission de mon équipe VSX.
    Du coup le programme VSIP est réduit à deux niveaux (puisque le niveau Affiliate n’est plus utile que pour demander des PLK et des SLK ... dont il faut bien dire qu'elles embêtent un peu tout le monde). Et la grande nouvelle que j’ai apprise, c’est que même simplement pour des raisons techniques, le niveau Alliance est rudement intéressant. Il vous offre notamment :

    • un contact direct avec les équipes de Microsoft (la notre, mais aussi le cas échéant des équipes du cœur de Visual Studio, de Team Architect, etc …). Ces contacts ont lieu au cours de réunions techniques qu’on appelle Dev clinics, où, en fait, les membres du programme apportent leurs propres problèmes, questions et y trouvent des réponses. Alors, vous me direz c’est a Redmond. Oui, 4 fois par ans c’est à Redmond, mais il y a aussi une DevClinic en marge de la TechEd Europe. Et puis, bon, … ca pourrait venir des DevClinics plus fréquentes en Europe.
    • L’accès a des informations sur le futur de Visual Studio et a des informations business (reserve aux seuls membres)
    • L'accès a des builds internes (voir des sources pour le niveau Premium)

    Je vous mets ci-dessous un slide qui compare les deux programmes.

    Vous me direz maintenant, ca a un cout. Ben oui, c’est vrai, mais, ..., j’ai oublie de vous dire ... il y a un abonnement d’un an a MSDN Premium (donc avec Team System) d’inclus dans le programme … et donc ... , dans le cas du niveau Alliance, cela n’est finalement plus cher du tout … (et on ne parlera pas du taux de change actuel du dollar). Hummm ....

     

  • Mes premiers pas chez Microsoft - UK ... si on peut dire

    Certains d’entre vous le savent déjà. Peut-être tous : j’ai maintenant un blog sur MSDN. Bon ! le contenu est en anglais, et ca ne va pas m’empêcher d’écrire sur celui-ci, en français.


    En effet, je travaille pour Microsoft UK, à Cambridge, depuis le 25 mars, mais je n’ai pas encore eu (enfin, pris) le temps de vous l’annoncer, et voici pourquoi. En fait, à vrai dire, j’ai commencé par sécher la première semaine, parce que le soir même de mon départ de la DGA je rentrais d’urgence a l’hôpital (militaire bien sur : d'ailleurs cet hôpital est vraiment génial, et le personnel soignant est dévoué et compétent ... je n'ai pas trouvé que c'était si fréquent, alors je voulais le dire, au passage). Bon ! Alors vous imaginez ! commencer un nouvel emploi, et dans un autre pays en plus, et ne pas être là au début ! Il a fallu que ca tombe sur moi !! Evidemment cela a bien fait rire mes petits copains de MS France ! Mais ca c’est bien passe quand même. Je ne dirais pas que chez Microsoft de telles situations sont prevues, mais, bon, ils ont gere. Je me demande ce que ca aurait donne le meme cas dans la DGA ?


    Ensuite, quand je dis que je travaille à Cambridge, ce n’est pas tellement vrai non plus. Au bout de deux semaines j’étais à Redmond, pour deux semaines. En effet, j’appartiens a l’équipe Visual Studio Ecosystem, (notre portail est justement http://msdn.com/vsx) et, si j'ai l'honneur de partager mon bureau avec Stuart Kent et Steve Cook (entre autres), mon manager, James Lau, est aux US … quand on peut faire simple, ce n’est pas intéressant pour Jean-Marc !


    Apres mon séjour aux US (ou j'ai trouvé qu'il faisait bien froid pour une fin avril), je me suis laisse embringuer dans un Tour d’Europe VSX, avec James, justement. On en parle sur nos blogs (enfin surtout lui, parce que moi j’écris quand même moins et moins vite en anglais qu’en français, quoi que, avec mon clavier anglais, c’est assez difficile pour les accents et les c cédilles). On s’amuse beaucoup, et notre public a l’air d’aimer.

    Du coup j’ai appris plein de choses. Et en particulier quelque-chose qui pourrait vous intéresser sur le programme VSIP.

  • DslFactory en session pleinière aux Techdays

    Sébastien a eu l'honneur de participer à la session pleinière du 3ème jour des Techdays, le 13 février dernier.

    Il illustrait une partie présentée par Bernard Ourghanlian, directeur technique et de la sécurité de Microsooft France à qui il donnait la réplique. Il a ainsi présenté, devant plus de 4000 personnes, un DSL spécifique de comportements dynamiques de simulation, créé par la Marine Nationale et la Délégation Générale pour l'Armement.

    J'ai hâte de voir les webcasts !

  • Lancement de la "Visual Studio Gallery"

    L'équipe "Visual Studio Ecosystem" de Microsoft vient de lancer officiellement, hier, la "Visual Studio Gallery" que vous pourrez trouver en http://visualstudiogallery.com/

    C'est un portail dans lequel sont référencés, regroupés par catégorie, auteur, etc ... tout un tas de produits ou exemples de personalisation et d'extensibilité Visual Studio. Certains sont gratuits et libres, d'autres des versions d'évaluation, et d'autres, encore des produits commerciaux. Cela va des macros, snippets, aux langages graphiques DSL en passant par des packages etc ...

    Evidemment, nous sommes présents, ! avec, pour le moment, le WCF Designer, et la bibliothèque DslFactory.Utilities, et d'autres exemples vont venir les compléter dans les semaines qui suivent.

    Notez enfin que l'équipe VSX en a profité pour changer le look de son portail : http://msdn.com/vsx

     

  • Migrer un DSL de Visual Studio 2005 vers Visual Studio 2008

    Les DSL çà se migre bien !

    Tout d'abord, je voudrais vous souhaiter une excellente année 2008. Nous avons été un peu négligents, ces temps-ci, vis à vis de la communauté. Nous étions, Alain, Sébastien et moi en train de nous remettre du VSX Day (et çà vous a laissé le temps d'en digirer tout le contenu ;-)).

    Mais il était prévu qu'on aborde un peu plus en détails le VS SDK de VS 2008 en début d'année, alors allons-y !

     

    Nico a demandé, (fin novembre - honte à nous !),

    "Est ce que l'on a une idée de la compatibilité des DSL fait en VS 2005 avec VS 2008 ?
    Pour l'instant, l'installation ne fonctionne pas (le setup généré réclame VS 2005).
    Faut-il recompiler le projet en VS 2008 ? Est ce que tout le méta-modèle est compatible ?
    "

    Je viens seulement de m'intéresser à la migration de mon plus gros DSL (en terme de classes, mais çà, ce n'est pas très important, puisque c'est du code qui est généré généré, mais surtout en terme de volume code custom).  En supposant que le SDK 2008 est installé dans C:\Program Files\Microsoft Visual Studio 2008 SDK, j'ai suivi la procédure expliquée dans le fichier C:\Program Files\Microsoft Visual Studio 2008 SDK\VisualStudioIntegration\Tools\DSLTools\MigrationGuide.htm, et çà m'a pris même pas deux heures, j'ai eu une nouvelle PLK en 5 minutes, et çà a parfaitement marché du premier coup. Mes modèles existants se sont parfaitement ouverts dans VS 2008, et tout fonctionne comme avant. Je m'y attendais, pour tout vous dire, mais l'équipe DSLTools a encore fait fort.

    Je suis donc en mesure de répondre :

    "Est ce que l'on a une idée de la compatibilité des DSL fait en VS 2005 avec VS 2008 ? " oui : elle me semble parfaite.

    "Faut-il recompiler le projet en VS 2008 ?" Oui, mais c'est un peu plus compliqué que çà.

    "Est ce que tout le méta-modèle est compatible ?" le .dsl l'est. Le méta-modèle aussi, il le semble !

    La procédure de migration - retour d'expérience

    Alors pourquoi çà m'a pris quand même deux heures ? je vais l'expliquer, et pour çà je vais migrer avec vous un autre DSL que vous connaissez : le DSL WCF Language.

    Le guide de migration nous dit qu'il faut :

    Première étape : créer un nouveau DSL minimal avec Visual Studio 2008 en lui donnant le même nom de DSL et le même nom de namespace que le DSL à migrer. Ces informations peuvent se trouver dans le fichier dsldefinition.dsl original (ou encore dans les propriétés du DSL que vous trouverez dans la fenêtre des propriétés en cliquant sur le fond diagramme que constitue la définition de votre DSL  : propriétés Name (WcfLanguage) et Namespace (DslFactory.WcfLanguage)).

     

     


      • Première surprise : la solution a changé, on a des fichiers en plus :
        • ils concernent la suppression de warning lors de l'analyse statique de code.
        • Par ailleurs, le répertoire CtcComponents et son horrible fichier Commands.ctc du projet DslPackage a été remplacé par un fichier Commands.vsct qui décrit les menus au format XML.



      • Deuxième surprise : si vous exécutez le DSL, vous verrez que les formes sont plus belles, et plus fines qu'auparavant (les icônes par défaut ont également changé)

     


     

    Deuxième étape : remplacer les fichiers dsldefinition.dsl et dsldefinition.dsl.diagram de la nouvelle solution sous Visual Studio 2008, par ceux de la version 2005, ainsi que le contenu des répertoires Resources des deux projets Dsl et DslPackage. C'est important parce que les ressources, notamment les images, seront référencées par le code généré à partir du .dsl.

    Il est possible que vous ayiez également à ajouter des références au projets si vous utilisez des Domain Types externes (c'est le cas pour le WcfLanguage où nous utilisons les types AdressFilterMode de System.ServiceModel et IsolationLevel de System.Transactions, il nous faut donc référencer ces deux assemblages.

    Si vous avez des propriétés dont le Kind est CustomStorage, vous devrez aussi recopier du code custom. Comme le WCF Language est bien structuré, il nous suffit d'ajouter le répertoire "CustomCode", ainsi que le fichier Resources.resX que nous avions ajouté dans le répertoire de solution Properties en lui donnant comme propriété "Custom Tool" la valeur ResXFileCodeGenerator

     

     

     

    Troisième étape : l'ajout de références

    Si votre projet était simple, vous n'auriez éventuellement aucune référence à ajouter, ou bien uniquement des références à des assemblages qui ne sont pas concernés par le changement de Visual Studio. Par contre, dans le cas du WcfLanguage, nous avons des références à DslFactory.Utilities (qui aura été migré de la même façon), EnvDTE, et EnvDTE80. Il faut donc ajouter ces références aux assemblages EnvDTE, mais en prenant bien garde à ce que cela soit ceux de Program Files\Microsoft Visual Studio 9 et pas de Visual Studio 8. Dans le cas du WCF Language, il faut aussi ajouter VSLangProj en prenant les mêmes précautions (même si l'assemblage de même numéro de version peut aussi se trouver en d'autres endroits, comme dans Visual Studio 8) [il faut vous dire que sur ma machine, j'ai encore conservé Visual Studio 2005 et son VS SDK 4.0 à coté de Visual Studio 2008 et son VS SDK 1.0, c'est pourquoi je pourrais me tromper en ajoutant les références. Si vous n'avez que le VS SDK 2008, vous n'aurez pas ce problème]

     

    Quatrième étape : transformer tous les templates, générer le DSL et l'exécuter.

    Et çà marche !

     

    Quatrième étape : Migrer les boutons, menus contextuels.

    Il nous reste une chose à faire : notre DSL n'a pas encore retrouvé les menus contextuels sur ses formes. Dans la solution pour Visual Studio 2005, deux fichiers étaient concernés :

    GeneratedCmd.tt qui contenait la définition des ids des boutons (generate, showAsRole, etc ...)

    <#@ Dsl processor="DslDirectiveProcessor" requires="fileName='..\..\Dsl\DslDefinition.dsl'" #>

    <#@ include file="DslPackage\GeneratedCmd.tt" #>

    #define guidCmdSet { 0xe642d46e, 0x89bf, 0x4dd6, { 0xbe, 0x00, 0x81, 0x8f, 0x27, 0x92, 0xfc, 0x1b } }

    #define generate 0x100

    #define showAsRole 0x101

    #define showAsMember 0x102

    #define hide 0x103

    #define showHiddenMembers 0x104
    #define showUsedConcepts 0x105

     

    et Commands.ctc du répertoire CtcComponents

    #include "stdidcmd.h"

    #include "vsshlids.h"

    #include "msobtnid.h"

    #include "virtkeys.h"

    #include "DSLToolsCmdID.h"

    #include "..\GeneratedCode\GeneratedCmd.h"

     

    CMDS_SECTION guidPkg

     

     MENUS_BEGIN

      GENERATED_MENUS

               // Add additional menu definitions here.

               // NewMenu, Relative to Group, Priority, Type, Name, Text;

     MENUS_END

     

     NEWGROUPS_BEGIN

      GENERATED_GROUPS

               // Add additional menu group definitions here.

               // NewGroup, Parent Group, Priority;

     NEWGROUPS_END

     

      BUTTONS_BEGIN

       GENERATED_BUTTONS

       // Add additional button definitions here.

       // Command, Parent Group, Priority, Image, Type, Visibility, Text;

       guidCmdSet:generate, guidCmdSet:grpidContextMain,  0x0200, OI_NOID, BUTTON,      DIS_DEF, "Generate code" ;

       guidCmdSet:showAsRole, guidCmdSet:grpidContextMain,  0x0200, OI_NOID,      BUTTON,      DIS_DEF, "Show as a role" ;

       guidCmdSet:showAsMember, guidCmdSet:grpidContextMain,  0x0200, OI_NOID,    BUTTON,      DIS_DEF, "Show as a member" ;

       guidCmdSet:hide, guidCmdSet:grpidContextMain,  0x0200, OI_NOID,     BUTTON,      DIS_DEF, "Hide the member" ;

       guidCmdSet:showHiddenMembers, guidCmdSet:grpidContextMain,  0x0200, OI_NOID,      BUTTON,    DIS_DEF, "Show hidden members" ;      

       guidCmdSet:showUsedConcepts, guidCmdSet:grpidContextMain,  0x0200, OI_NOID,       BUTTON,    DIS_DEF, "Show used concepts" ;

       guidCmdSet:showAsRole, guidCmdSet:grpidExplorerMenuGroup,  0x0200, OI_NOID,       BUTTON,    DIS_DEF, "Show as a role" ;

       guidCmdSet:showAsMember, guidCmdSet:grpidExplorerMenuGroup,  0x0200, OI_NOID,     BUTTON,    DIS_DEF, "Show as a member" ;

       guidCmdSet:hide, guidCmdSet:grpidExplorerMenuGroup,  0x0200, OI_NOID,      BUTTON,      DIS_DEF, "Hide the member" ;

     

     BUTTONS_END

     

    BITMAPS_BEGIN

    BITMAPS_END

     

    CMDS_END

     

    CMDUSED_SECTION

    CMDUSED_END

     

    CMDPLACEMENT_SECTION

        GENERATED_CMDPLACEMENT

        // Add additional command placements here.

        // Command, Group, Priority;

    CMDPLACEMENT_END

     

    VISIBILITY_SECTION

        GENERATED_VISIBILITY

        // Add additional visibility definitions here.

        // Command, GUID when visible;

    VISIBILITY_END

     

    KEYBINDINGS_SECTION

        // Command, when available, emulation, keystate;

    KEYBINDINGS_END

     

     

    Ces deux fichiers étaient assez embêtants à maintenir parce que non seulement le format du fichier .ctc n'était pas très intuitif, mais en plus il fallait garder la cohérence entre les deux.

     

    Avec le VS SDK 2008, le fichier .ctc a été remplacé par le fichier Commands.vsct qu'il nous faut donc remplir

    Avant d'ajouter les commandes, ce fichier a le contenu suivant :

    <?xml version="1.0" encoding="utf-8"?>

    <CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema">

      <!-- -->

      <!-- This file contains custom command definitions. -->

      <!-- -->

      <!-- NOTE: Each time commands are added or changed, the "version" parameter to the -->

      <!-- ProvideMenuResource attribute in Shell\Package.tt should be incremented. -->

      <!-- This causes Visual Studio to re-merge the menu definitions for the package. -->

      <!-- Otherwise, changes won't take effect until the next time devenv /setup is run. -->

      <!-- -->

      <Extern href="stdidcmd.h"/>

      <Extern href="vsshlids.h"/>

      <Extern href="msobtnid.h"/>

      <Extern href="virtkeys.h"/>

      <Extern href="DSLToolsCmdID.h"/>

      <Include href="GeneratedCode\GeneratedVsct.vsct"/>

      <Commands package="guidPkg">

      </Commands>

    </CommandTable>

     

    Il nous suffit donc de migrer le contenu du .ctc et du .h dans le .vsct :

    • D'abord les identifiants des commandes.En s'aidant du fichier GeneratedVSCT.vsct généré, on obtient la fin du fichier suivante où les #define ont été remplacés par des IDSymbol. Le guid du guidCmdSet est recopié tel quel du GeneratedVSCT.vsct :

      <Commands package="guidPkg">

      </Commands>

      <Symbols>

        <GuidSymbol name="guidCmdSet" value="{78ec39e2-7285-479d-8796-f465a1f4563e}" >

          <IDSymbol name="generate" value="0x100"/>

          <IDSymbol name="showAsRole" value="0x101"/>

          <IDSymbol name="hide" value="0x103"/>

          <IDSymbol name="showHiddenMembers" value="0x104"/>

          <IDSymbol name="showUsedConcepts" value="0x105"/>

        </GuidSymbol>

      </Symbols>

    </CommandTable>

     

    Ensuite, nous écrivons les boutons :

     

    A titre d'exemple, la ligne suivante du .ctc :

      guidCmdSet:generate, guidCmdSet:grpidContextMain,  0x0200, OI_NOID,    BUTTON,    DIS_DEF, "Generate code" ;

     

    devient le texte en gras suivant :

     

      <Commands package="guidPkg">

        <Buttons>

          <Button guid="guidCmdSet" id="generate" priority="0x0200" type="Button">

            <Parent guid="guidCmdSet" id="grpidContextMain"/>

            <CommandFlag>DefaultDisabled</CommandFlag>

            <CommandFlag>DefaultInvisible</CommandFlag>

            <CommandFlag>DynamicVisibility</CommandFlag>

            <Strings>

              <ButtonText>Generate code</ButtonText>

            </Strings>

          </Button>

     

        </Buttons>

     

    Pour finir, le fichier devient :

    <?xml version="1.0" encoding="utf-8"?>

    <CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema">

      <!-- -->

      <!-- This file contains custom command definitions. -->

      <!-- -->

      <!-- NOTE: Each time commands are added or changed, the "version" parameter to the -->

      <!-- ProvideMenuResource attribute in Shell\Package.tt should be incremented. -->

      <!-- This causes Visual Studio to re-merge the menu definitions for the package. -->

      <!-- Otherwise, changes won't take effect until the next time devenv /setup is run. -->

      <!-- -->

      <Extern href="stdidcmd.h"/>

      <Extern href="vsshlids.h"/>

      <Extern href="msobtnid.h"/>

      <Extern href="virtkeys.h"/>

      <Extern href="DSLToolsCmdID.h"/>

      <Include href="GeneratedCode\GeneratedVsct.vsct"/>

      <Commands package="guidPkg">

        <Buttons>

          <Button guid="guidCmdSet" id="generate" priority="0x0200" type="Button">

            <Parent guid="guidCmdSet" id="grpidContextMain"/>

            <CommandFlag>DefaultDisabled</CommandFlag>

            <CommandFlag>DefaultInvisible</CommandFlag>

            <CommandFlag>DynamicVisibility</CommandFlag>

            <Strings>

              <ButtonText>Generate code</ButtonText>

            </Strings>

          </Button>

     

          <Button guid="guidCmdSet" id="showAsRole" priority="0x0200" type="Button">

            <Parent guid="guidCmdSet" id="grpidContextMain"/>

            <CommandFlag>DefaultDisabled</CommandFlag>

            <CommandFlag>DefaultInvisible</CommandFlag>

            <CommandFlag>DynamicVisibility</CommandFlag>

            <Strings>

              <ButtonText>Show as a role</ButtonText>

            </Strings>

          </Button>

     

     

          <Button guid="guidCmdSet" id="showAsMember" priority="0x0200" type="Button">

            <Parent guid="guidCmdSet" id="grpidContextMain"/>

            <CommandFlag>DefaultDisabled</CommandFlag>

            <CommandFlag>DefaultInvisible</CommandFlag>

            <CommandFlag>DynamicVisibility</CommandFlag>

            <Strings>

              <ButtonText>Show as a member</ButtonText>

            </Strings>

          </Button>

     

          <Button guid="guidCmdSet" id="hide" priority="0x0200" type="Button">

            <Parent guid="guidCmdSet" id="grpidContextMain"/>

            <CommandFlag>DefaultDisabled</CommandFlag>

            <CommandFlag>DefaultInvisible</CommandFlag>

            <CommandFlag>DynamicVisibility</CommandFlag>

            <Strings>

              <ButtonText>Hide this member</ButtonText>

            </Strings>

          </Button>

     

          <Button guid="guidCmdSet" id="showHiddenMembers" priority="0x0200" type="Button">

            <Parent guid="guidCmdSet" id="grpidContextMain"/>

            <CommandFlag>DefaultDisabled</CommandFlag>

            <CommandFlag>DefaultInvisible</CommandFlag>

            <CommandFlag>DynamicVisibility</CommandFlag>

            <Strings>

              <ButtonText>Show hidden members</ButtonText>

            </Strings>

          </Button>

     

     

          <Button guid="guidCmdSet" id="showUsedConcepts" priority="0x0200" type="Button">

            <Parent guid="guidCmdSet" id="grpidContextMain"/>

            <CommandFlag>DefaultDisabled</CommandFlag>

            <CommandFlag>DefaultInvisible</CommandFlag>

            <CommandFlag>DynamicVisibility</CommandFlag>

            <Strings>

              <ButtonText>Show used concepts</ButtonText>

            </Strings>

          </Button>

     

     

          <Button guid="guidCmdSet" id="showAsRole" priority="0x0200" type="Button">

            <Parent guid="guidCmdSet" id="grpidContextMain"/>

            <CommandFlag>DefaultDisabled</CommandFlag>

            <CommandFlag>DefaultInvisible</CommandFlag>

            <CommandFlag>DynamicVisibility</CommandFlag>

            <Strings>

              <ButtonText>Show as a role</ButtonText>

            </Strings>

          </Button>

     

     

          <Button guid="guidCmdSet" id="showAsMember" priority="0x0200" type="Button">

            <Parent guid="guidCmdSet" id="grpidContextMain"/>

            <CommandFlag>DefaultDisabled</CommandFlag>

            <CommandFlag>DefaultInvisible</CommandFlag>

            <CommandFlag>DynamicVisibility</CommandFlag>

            <Strings>

              <ButtonText>Show as a member</ButtonText>

            </Strings>

          </Button>

     

     

          <Button guid="guidCmdSet" id="showAsMember" priority="0x0200" type="Button">

            <Parent guid="guidCmdSet" id="grpidContextMain"/>

            <CommandFlag>DefaultDisabled</CommandFlag>

            <CommandFlag>DefaultInvisible</CommandFlag>

            <CommandFlag>DynamicVisibility</CommandFlag>

            <Strings>

              <ButtonText>Show as a member</ButtonText>

            </Strings>

          </Button>

        </Buttons>

      </Commands>

      <Symbols>

        <GuidSymbol name="guidCmdSet" value="{78ec39e2-7285-479d-8796-f465a1f4563e}" >

          <IDSymbol name="generate" value="0x100"/>

          <IDSymbol name="showAsRole" value="0x101"/>

          <IDSymbol name="hide" value="0x103"/>

          <IDSymbol name="showHiddenMembers" value="0x104"/>

          <IDSymbol name="showUsedConcepts" value="0x105"/>

        </GuidSymbol>

      </Symbols>

    </CommandTable>

     

    Et vous voyez, le temps d'écrire tout çà ... c'est l'essentiel du temps pris.

     

    Pensez bien, dans Package.tt à incrémenter le numéro de menu et de toolboxItems, pour que Visual Studio prenne en compte les nouveautés :

    [VSShell::ProvideMenuResource("1000.ctmenu", 2)]
    [VSShell::ProvideToolboxItems(2)]

    Construisez le DSL, exécutez le : çà marche immédiatement :-) !

     

    Cinquième étape demander une PLK.

    Cette étape aussi a été grandement améliorée : il faut toujours aller sur le site www.vsipmembers.com, comme auparavant, pour demander la PLK. Par contre la grande nouveauté c'est que maintenant, on obtient la PLK immédiatement, et pas au bout de quelques jours.

     

    Sixième étape, recréer un programme d'installation

    Comme auparavant, on recrée un setup pour DSL, et on recopie éventuellement dans le contenu spécial du .dslsetup. Dans notre cas, il ne faut pas oublier DslFactory.Utilities comme SupportingAssembly, et les vsItemTemplate sont ajoutés avec plusieurs localeId (au moins l'américain et le Français ! : 1033 et 1036).

     

     

    Un autre conseil

    En recopiant le code custom du projet dslpackage, ne pas oublier les ProjectItemTemplates du projet dslpackage.

    Conclusion

    J'ai essayé de montré dans ce billet qu'il était vraiment simple de migrer un DSL de Visual Studio 2005 à Visual Studio 2008. Simple, et sans mauvaise surprise. J'ai apprécié le .vsct qui, notamment grâce à l'Intellisense, sont faciles à écrire, et faciles à lire ... très intuitifs.

     

  • Des DSL dans Rosario

    Vous le savez peut-être, un CTP de Rosario a été publié la semaine dernière (Novembre 2007) sous forme d'une VPC. J'ai un peu joué avec la VPC, et me suis notamment intéressé à deux nouveaux types de diagrammes, proches de ceux d'UML :

    - le diagramme de classe logique

    - le diagramme de séquence.

     

    Actuellement, il est possible d'ajouter un diagramme de classe logique (Logical Class Diagram), et lui ajouter des formes :

    • soit par la toolbar
    • soit en les envoyant depuis un physical Class Diagram (.cd classique depuis VS 2005), par une commande contextuelle sur les classes ou interfaces de ces Physical Class Diagrams.

    Il est également possible d'ajouter un diagramme de séquence

    A partir d'une classe ou interface du diagramme de classes logique, on peut, pour le moment :

    • la mettre à jour depuis une classe d'un diagramme de classe physique (donc depuis du code)
    • l'envoyer vers le diagramme de séquence (pour créer une instance d'une ligne de vie).

    A partir d'un appel synchrone du diagramme de séquence, on peut l'associer à une méthode de la classe représentée par la ligne de vie cible de l'appel synchrone, dans le diagramme de classe logique. On peut aussi ajouter une nouvelle méthode.

     

    Alain m'a dit qu'il avait vu des possibilités de génération de code, mais pour le moment, je ne les ai pas trouvées. Mais il est certain que nous aurons, à terme, des diagrammes qui ressemblent aux diagrammes UML, mais qui servent à générer du code, et pourront être mis à jour à partir du code.

     

    En tout état de cause, on trouve déjà deux DSL (d'autres sont à venir, et les diagrammes d'architecture d'applications qu'on avait déjà dans Team Architect 2005 sont toujours là), et ils communiquent entre eux ... j'ai hâte de tester les prochains CTP, mais çà promet !

  • Visual Studio 2008 RTM est disponible, et le VS SDK 2008 V1 également

    La version finale de Visual Studio 2008 est sortie hier. Elle est disponible pour les abonnés MSDN. Dans la foulée, l'équipe VSX a immédiatement, (et c'est à noter parce que c'est une première dans l'histoire de Visual Studio), publié la première version du SDK pour VS 2008. Ils ont également publié les runtimes gratuits pour le fameux VS Shell 2008, qui vous permet, dans le mode isolé, d'héberger vos packages dans un exécutable autonome et que vous pouvez distribuer librement. Nous avions présenté cette possibilité il y a un peu plus d'un mois, en fin de VSX Day ... elle vous est maintenant accessible !

    Pour en savoir plus :

     

     

  • Les WebCasts de toutes les sessions VSX Day sont disponibles !

    Après les présentations mises en ligne le lendemain de l'événement, et les exemples de code le week-end suivant, ce sont, pour finir les Webcasts des sessions de la journée VSX Day sont disponibles sur le site "Vision" de Microsoft France :

    Notez que ces liens vous amèneront à des listes de WebCasts plus détaillés (il faut fouiller un peu pour trouver certains WebCasts pour le moment). Nous allons améliorer cela rapidement.

  • Les nouvelles VPC de VS 2008 Beta2 sont disponibles.

  • [IMPORTANT] Les VPC de Visual Studio 2008 Beta2 expirent le 1er novembre 2007 (et non le 15 mars 2008)

    Cette information est importante pour ceux d'entre vous qui ont testé Visual Studio 2008 BETA 2 sous forme de VPC (Machine virtuelle) : celles-ci expireront le 1er novembre au lieu du 15 mars comme cela était annoncé. Apparemment, Microsoft chercherait encore pourquoi !

    En tous cas, il vaudrait mieux faire une copie de tous vos projets avant le 1er novembre. sans quoi vous aurez un message vous annonçant que votre VPC a atteint la date limite d'évaluation (deWindows !).

    A savoir :

    1. Chaque fois que vous rebooterez votre VPC après le 1er novemvre, vous aurez droit à 2 heures d'utilisation par reboot (c'est ok puor les scénarios démo).
    2. Si vous avez évalué Team Fundation Server Beta2, voyez l'aticle "moving Team Fundation Server" http://msdn2.microsoft.com/en-us/library/ms404879(vs.90).aspx pour savegarder vos données.
    3. Dans tous les cas, si vous le désirez, vous pouvez upgrader votre Windows 2003 server avec une license que vous auriez par ailleurs
    4. Microsoft va fournir en début de cette semaine de nouvelles VPC utlilisables plus longtemps.

    Pour plus d'information je vous conseille d'aller voir le blog le Jeff Beehler qui a passé les quelques derniers jours à étudier le problème(http://blogs.msdn.com/jeffbe/archive/2007/10/27/update-on-expiring-vs2008-beta2-vpcs.aspx)

    N'hésitez pas à propager cette nouvelle autour de vous.

  • VSD Day 07 - les exemples de code

    Après les présentations mises en ligne la semaine dernière, voici les exemples de code.

    • 1. Fil Rouge : La démo de Sébastien, avec les 3 exemples de .chm du fil rouge avant et après le passage des Add-in de SandCastle et de SandCastleHelpFileBuilder 1-FilRouge.zip (998 ko)

    • 2. Personnalisation de VS :
      • La démonstration d'Alain sur les Visual Studio Policy : 2-VSPolicy.zip (2,14 Mo).
      • Par ailleurs, le DSL "DSL4VSI" qu'Alain a créé pour générer des Visual Studio Installer (VSI) capables d'installer des 'Code Snippet', 'VSTemplate', 'Macro Project', 'Addin', 'Toolbox Control' est disponible sur CodePlex en http://www.codeplex.com/dsl4vsi

    • 3. API d'Automation et Add-ins.
      • La solution qui a servi de support aux 4 démonstrations de Jean-Marc sur la mise en oeuvre du ProjectModel (énumération des projets et des fichiers), du CoreModel (énumération des fenêtres) du CodeModel (création dynamique d'une solution contenant un projet contenant une classe sérialisable) : 3.1-AutomationAPI.zip (559 ko)

      • Les sources et binaires de l'Add-in de sébastien pour générer des images cliquables à partir des ClassDiagrams : 3.2-Add-ins.zip (25,3 ko)

    • 4. Le tour du VS SDK a fait l'objet d'une démo Live que vous pourrez retrouver lorsque les WebCasts seront disponibles.

     

    Pour les démos suivantes, sauf la 6.1, vous devrez installer le VS SDK 4.0 pour Visual Studio 2005


    • 4.5. En ce qui concerne la démonstration associée à la présentation de la découverte des Packages, l'archive 4.5-Packages.zip (7,81 Mo) comporte les 8 étapes de construction du package ReferenceDocumentationGenerator permettant d'exporter des images cliquables correspondant aux ClassDiagram et aux DSL, et de choisir les Options d'exportation ainsi que les diagrammes à exporter.

    • 5.2. La démonstration de Sébastien sur la création d'un DSL pour des formes géométriques comporte, elle, 7 étapes, de la création du Domain Model avec les DSL Tools au déploiement. Ces étapes ont été regroupées dans 5.2-VSX-Day-solutions.zip (8 Mo)

    • 6.1. La session des aspects avancés de personnalisation de la fenêtre des propriétés à l'aide des concepts de la namespace System.ComponentModel a fait l'objet de démonstrations de la part d'Alain que vous pourrez retrouver dans 6.1-ComponentModel.zip (53 ko)

    • 6.2. La démonstration de la session Utilisation du Domain Model est dans cette archive : 6.2-UtilisationModele-ReferenceDocumentationGenerator.zip (755 ko). Elle est également comprise dans l'archive de la sesssion 4.5 sur les Packages dont elle constitue la 8ème étape.

    • 6.3. Le modificatif au DSL de Sébastien pour lui adjoindre des fonctions avancées comme la bidirectionnalité Model <-> Code est, pour mémoire, redonné dans 6.3- Bidirectionnalite.zip (2,90 Mo)

     

    D'ici à quelques jours, les Webcasts seront disponibles pour compléter les présentations et les démos ... d'ici là, bonnes compilations.

  • VSX Day 07 - les présentations PowerPoint

    Vous étiez 139 à nous rejoindre à Paris, mardi dernier pour assister à l'événement que nous avions organisé pour vous présenter la carte des technologies de personnalisation et d'extensibilité de Visual Studio.

    sommaire

    Après une courte introduction, nous avons présenté la problématique d'industrialisation de la documentation de référence - qui nous a servir de fil rouge de cette journée - et des extensions de Visual Studio y répondant.

    Les différentes technologies d'extensibilité ont ensuite été présentées, des plus accessibles aux plus puissantes :

    1. La personnalisation simple de Visual Studio, templates, wizards, et l'utilisation de Guidances GAX nous donnera déjà des possibilités intéressantes
    2. Puis est venu le temps de commencer à coder avec l'automation par les Macros, et Add-In
    3. Ensuite, le Tour du « Visual Studio SDK » nous a permis de nous y retrouver rapidement dans toutes ces technologies méconnues, et sur ce qu'elles peuvent vous apporter 
    4. Un zoom particulier a ensuite été effectué sur quelques unes de ces technologies :
      • Combien il est simple d'utiliser l'information capitalisée dans Team System
      • Comment Wix va aider à réaliser des .msi à partir d'un formalisme XML
      • Mettre en ouvre SandCastle et ses Add-in
      • Créer des packages Visual Studio, pourquoi, et comment ce n'est finalement pas si compliqué quand on a les bons outils
      • Les Guidances (GAT) que vous pouvez mettre à disposition des développeurs
    5. L'après-midi a été entièrement consacrée aux Domain Specific Languages (DSL) et leur mise en ouvre dans Visual Studio via les DSL Tools. Débutants, comme les utilisateurs confirmés ont, nous l'espérons, pu y trouver réponses à leurs questions
    6. Nous avons terminé la journée en levant le voile sur l'extensibilité VS 2008, et en donnant des liens utiles

     

     

    Si vous êtes intéressés par un sujet en particulier, vous pouvez télécharger le sommaire au format .pps, et cliquer sur les stations de métro. Vous serez amené directement aux transparent correspondant.

  • Revue de presse : le livre sur les DSL Tools

    Avec Sébastien, nous nous sommes aperçus (non sans une certaine honte), que nous n'avions pas encore écrit à propos du livre de Steve Cook, Gareth Jones, Stuart Ken et Alan Wills sur les DSL Tools; heureusement, Sami l'avait annoncé à sa sortie.

    Il faut vous dire que, pour ma part, c'est déjà une vielle histoire puisque j'ai eu l'honneur d'en être un des relecteurs techniques pendant les vacances de Noël 2006 ; alors je comptais bloguer dessus en vous donnant plus d'information que simplement dire "il est sorti", mais je me suis laissé prendre par le temps, et on arrive en août. Mais nous nous sommes dit qu'il n'était pas trop tard, alors voici ce que j'aurai dû écrire il y a quelques mois.

    Ce que j'en pense

    Je l'ai adoré dès la première lecture. C'est vraiment le livre que nous attendions, répondant à la fois au besoin d'une documentation conceptuelle sur l'utilisation des DSL Tools, et présentant comment s'y prendre pour créer un DSL de A à Z. Tout le monde l'appréciera, j'en suis certain, aussi bien :

    • les directeurs techniques, chefs de projets, architectes et développeurs, qui veulent savoir si, et comment, les DSL peuvent augmenter leur productivité. Je leur recommande notamment les deux premier chapitres, plein de conseils sages issus de l'expérience des auteurs (il faut peut-être le rappeler, Steve Cook a été l'un des concepteurs de l'UML, le concepteur de l'OCL, et architecte de Rational XDE !). Les comparaisons, et pas forcément les oppositions, UML / DSL améliorent notre compréhension du débat. Le dernier chapitre (11 : concevoir un DSL) est également plus méthodologique. Avec ce livre, la vision "Software Factories" gagne en concret.
    • les débutants dans le domaine, qui découvrirons les DSL Tools, pas à pas, notamment à partir de deux exemples fil-rouge de la vraie-vie, bien choisis, qui nous conduisent au fur et à mesure des chapitres à étudier tous les aspects des DSL Tools, des plus simples aux plus complexes. Pour certaines techniques qui ne sont pas illustrées dans ces deux exemples, des références sont également faites aux Samples de personalisation livrés dans le SDK, ainsi que quelques exemples téléchargeables sur le site du livre (http://www.domainspecificdevelopment.com/). J'ai, par exemple, retenu un DSL de conception de circuits électroniques qui permet d'expliquer plein d'aspects uniques. En un mot, les débutants pourront démarrer très vite et aller très loin, gràce à ce livre.
    • les utilisateurs actuels ou futurs des DSL Tools, qui apprendront énormément aussi bien sur l'utilisation des DSL Tools (je pense notamment aux connector builders, aux name providers mais tous les chapitres ont leur lot de trésors), que sur le Code Custom à ajouter pour la personnalisation des DSL. Les deux derniers chapitres (10 : "aspects avancés des DSL", et 11 : "Concevoir un DSL") vous apprendront beaucoup. en un mot, vous aurez, de toute façon une meilleure vision tant globale que détaillée
    •  les académiques, intéressés par la modélisation en général (pas forcément les DSL). Même si vous êtes plutôt MDA/UML, le premier chapitre vous plaira, ainsi que le dernier. Les professeurs et élèves en théorie des modèles et théorie des langages doivent, à mon avis, avoir ce livre dans leur bibliothèque.

     

    D'autres points forts

    • Le livre est émaillé de trucs et astuces et de conseils méthodologiques, en encart.
    • Encore un trait que j'ai beaucoup aimé dans le livre, et que je ne retrouve, malheureusement pas souvent dans les livres techniques : les auteurs ne se contentent pas de présenter le produit et son utilisation, mais aussi le "pourquoi" des décisions que l'équipe des DSL Tools ont prises lors de la conception du produit, ainsi que plein des bonnes pratiques.

     

    Où vous le procurer ?

    Vous l'avez compris, vous devez absolument vous procurer ce livre. Il est disponible sous deux formes :

    • papier : dans toutes les bonnes librairies, en ligne ou non.
    • électronique : à lire sur votre ordinateur si vous êtes abonné à Safari Online 
  • Journée "Extensibilité Visual Studio" organisée par DslFactory le 16 octobre

    Une date à retenir et à inscrire dans vos calendrier : le 16 octobre !

    Nous serons à Paris, rue de l'Université, pour présenter pendant toute une journée tout ce que vous avez voulu savoir sur l'extensibilité Visual Studio (VSX).

    Evidemment, la fin de journée sera un feu d'artifice que présentations de travaux sur les DSL Tools (qu'est-ce que c'est ? exemples de réalisations, comment çà marche, et même certains aspects avancés, comme les DSL bidirectionnels).

    Mais la journée commencera par des sessions pour "débutants en l'extensibilité". Nous apprendrons comment personaliser Visual Studio, l'automatiser, utiliser le CodeModel. Nous ferons une progression pédagogique pour permettre à tous d'être en mesure de suivre les sessions de fin de journée. Et au passage, nous apprendrons plus en détails ce qu'est le VS SDK, ce qu'il peut-il nous apporter ? Ce qu'on peut en faire, quelles surcouches existent (je pense à GAT, mais pas seulement ... vous verrez).

    Et il ne faut pas oublier la génération d'ue documentation de référence pertinente et riche avec SandCastle (et oui ! il fait partie du VS SDK !). L'intégration continue de la documentation sera notre fil-rouge de la journée, prétexte à la découverte de toutes les technologies

     

     

  • CTP du VS SDK pour Visual Studio 2008 Beta2

    La semaine dernière, l'équipe VS a publié la Beta2 de VS 2008. Hier, la VSX Team sortait le premier CTP du SDK pour cette Beta2 (http://blogs.msdn.com/vsxteam/archive/2007/08/01/VS-SDK-Orcas-July-2007-CTP-released.aspx).

    Je ne l'ai pas encore testé - quand même ! - mais je peux vous dire qu'elle permet, par exemple, de répondre à une demande qui m'a souvent été faite : utilser les DSL sans avoir à trimbaler tout Visual Studio (et à l'acheter pour l'utilisateur final). En effet, à partir de ce SDK, il est possible de livrer nos DSL dans le "Visual Studio 2006 Shell" qui est une sorte de coquille vide, gratuite. Si vous voulez le tester, lisez également ceci

Plus de Messages Page suivante »

Calendrier des messages

<August 2008>
SuMoTuWeThFrSa
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

Abonnements

Propulsé par Community Server, par Telligent Systems