Si vous avez testé TFS 2010 Beta 2, alors vous avez peut être remarqué qu’il était possible d’éditer les étapes des work items de type Test Case directement depuis Visual Studio. A l’arrivée de la RTM, cette fonctionnalité a été supprimée. Actuellement la seule façon d’éditer les étapes des Test Cases est de le faire depuis MTM (Microsoft Test Manager). Voici à quoi ressemble l’onglet Steps depuis Visual Studio, remarquez le bouton “Open for edit” qui permet de lancer MTM :  Avec la beta 2, nous avions ceci :  Nous allons voir ci-dessous comment modifier l’interface des Test Case pour pouvoir modifier les steps comme dans la beta 2. En cherchant un peu on peut voir que le contrôle utilisé pour afficher les étapes est le custom control TestStepBaseControl de l’assembly Microsoft.TeamFoundation.TestManagement.Controls. Pour le retrouver il suffit de regarder à cet endroit : C:\ProgramData\Microsoft\Team Foundation\Work Item Tracking\Custom Controls\10.0\TestStepsControl.wicc Comme tout custom control de work item, TestStepBaseControl implémente l’interface IWorkItemControl. Ce contrôle implémente également l’interface IWorkItemControlFactory. Il doit ainsi implémenter la méthode Create, que l’on peut voir ci-dessous :  Visual Studio et MTM se servent certainement de cette méthode pour obtenir une instance de ce contrôle. Comme nous pouvons le voir dans ce code, si le Host a la possibilité d’afficher un contrôle WPF alors il retourne une instance de type TestStepsCustomControl, sinon il renvoie l’instance courante, à savoir de type TestStepsBaseControl. Le formulaire des work items de Visual Studio ne supportent que les contrôles WinForm. C’est pour cette raison que TestStepsBaseControl est un UserControl WinForm. Par contrôle, MTM est en WPF, ainsi TestStepsCustomControl est un UserControl WPF. Pour utiliser le contrôle TestStepsCustomControl depuis Visual Studio, il suffit de créer de l’encapsuler dans un composant ElementHost, lui même encapsuler dans un User Control WinForm (le composant ElementHost permet d’hoster un contrôle WPF dans un contrôle WinForm). - On crée un projet de type WinForm Custom Control Library.
- On ajoute les références Microsoft.TeamFoundation.TestManagement.Controls.dll et Microsoft.TeamFoundation.WorkItemTracking.Controls.dll.
- On ajoute ensuite un User Control et on lui fait implémenter l’interface IWorkItemControl.
- Dans le designer du user control, on ajoute un composant ElementHost
- Dans le code du designer, on crée un champ de type Microsoft.TeamFoundation.TestManagement.Controls.TestStepsCustomControl
- Puis on modifie le code de la méthode InitializeComponent, afin d’instancier le TestStepsCustomControl et de l’affecter à la propriété Child de l’objet ElementHost :
 - Il faut ensuite mapper les méthodes de l’interface IWorkItemControl sur le custom control :
 - Il ne reste plus qu’à compiler
- On copie la sortie dans le répertoire C:\ProgramData\Microsoft\Team Foundation\Work Item Tracking\Custom Controls\10.0
- On crée un fichier TestStepsControl2.wicc comme ceci :
 Le contrôle est maintenant déployé. La dernière étape consiste à éditer le formulaire du Work Item pour qu’il utilise notre nouveau contrôle. Le plus simple est d’utiliser les power tools. Après avoir installé les power tools de TFS, il suffit d’éditer le type de work item Test Case (Menu Tools>Process Editor>Work Item Type>Open WIT from Server). Dans l’onglet Layout, on retrouve le TabPage Steps, il suffit de modifier la propriété Type du contrôle utilisé pour afficher le champ Microsoft.VSTS.TCM.Steps :  La manip est terminée. Il ne reste plus qu’à ouvrir un Test Case et vérifier que les étapes sont maintenant éditable depuis Visual Studio :  Et comme par magie, on peut maintenant éditer les étapes de nos Test Case depuis Visual Studio!!
 Je vous l’ai présenté cette semaine, TFS Membership Visualizer est un petit outil qui permet de visualiser un graphe de dépendances des groupes TFS et de leurs membres. Je me suis dit qu’il serait sympa de l’intégrer directement dans Visual Studio. J’ai donc développé une extension VS que vous pouvez télécharger directement depuis l’Extension Manager de Visual Studio 2010. Vous pouvez également le télécharger sur le site des extensions de Visual Studio ou télécharger le code source sur le projet Codeplex associé. (Vous remarquerez également l’arrivée de BOWIE dans l’extension manager :) )
Si vous suivez l’actualité de TFS via le blog de Brian Harry, alors vous remarquerez que je rebondis sur l’un de ses derniers posts, à savoir comment visualiser de manière synthétique les memberships des groupes TFS. Peut être l’avez vous déjà constaté, la visualisation des membres des groupes de sécurité de TFS n’est pas très pratique. Des groupes sont définis au niveau du serveur TFS, au niveau de la collection ou encore ou niveau des projets. Il n’existe actuellement aucun moyen simple de visualiser les membres de ces groupes de manière synthétique. La seule solution est d’afficher chaque boite de dialogue de gestion des groupes à tous les niveaux (serveur, collection, projets). Comme le suggère Brian Harry, il est tout à fait possible de développer un outil avec les API de TFS. C’est d’ailleurs ce que j’avais fait pendant mes congés d’été mais je n’avais pas encore eu le temps de poster. Le code que je vous propose est tout simplement une application Windows qui va vous permettre de sélectionner les projets depuis un serveur TFS et de générer un graphe de dépendances entre les différents groupes et membres :  Une fois les projets sélectionnés il vous suffit de cliquer sur Generate Dependency Graph et Visual Studio s’ouvrira afin de vous présenter le graphe de dépendances :  Le graphe de dépendances est pour moi la meilleure des manières d’avoir une vue synthétique des memberships. Et on bénéficie en plus de tous les avantages de DGML, en terme de visualisation, navigation ou de sélection. Pour l’instant je génère un DGML en utilisant Linq To XML et donc un XDocument. Cependant il existe également une API qui facilite la génération de DGML. A creuser pour la prochaine fois…
Si vous n’avez pas hiberné cet été, alors vous savez que Microsoft va lancer d’ici 1 mois environ Windows Phone 7. Pour les développeurs c’’est une aubaine, puisque les applications WP7 sont développées en Silverlight ou en XNA. Si en plus de ne pas avoir hiberné cet été vous avez “surfer sur la vibe” du groupe “Développeurs” du plus grand réseau social alors vous savez surement que Microsoft a lancé en France un concours de développement d’applications pour WP7 et que toutes les applications du concours vous y sont présentées. Pas mal de collègues de Bewise se sont donc lancés dans ce concours en proposant des applications toutes aussi différentes les unes que les autres. Je vous propose ici de vous les présenter si vous ne les avez pas déjà vu dans un ordre totalement désordonné! Petite info supplémentaire : pour visualiser les vidéos présentent sur Facebook, il vous faudra tout d’abord “liker” le groupe Developpeurs. Vous pouvez ensuite “liker” les vidéos, afin d’apporter vos votes à ces applications. La première application, Nova4Phone, c’est mon coup de coeur en terme de technicité et de performance. Nova4Phone, développé par David Catuhe, est un portage sur WP7 du moteur 3D Temps réel Nova de la société Vertice. Cette application met en évidence les possibilités de développement en XNA et les performances de ces nouveaux devices. Je vous laisse apprécier les 2 vidéos de présentation de Nova4Phone : http://www.facebook.com/video/video.php?v=461276955395 http://www.facebook.com/video/video.php?v=1413141241316&oid=129459787073480 Voila pour les applications XNA proposées par Bewise et Vertice, les applications qui vont suivre sont toutes développées en Silverlight, mais ne sont pas moins intéressantes. Si vous habitez Toulouse, l’application VeloToulouse proposée par Patrice Lamarche vous permettra de trouver en temps réel les stations de vélo de la ville de Toulouse, la disponibilité de vélos dans une station ou encore les emplacements disponible pour garer son vélo dans une station, détection de votre position via le GPS... Le tout s’interface bien évidemment avec Bing Maps. Pour voir la vidéo, rendez vous sur Facebook : http://www.facebook.com/#!/video/video.php?v=435268853926 Fan de Starcraft, vous désirez suivre les classements et les stats des joueurs à travers le monde, alors Sébastien Pertus l’a fait pour vous, l’application Starcraft 2 pour WP7 : http://www.facebook.com/video/video.php?v=435240728926 Fan de rugby et du Stade Toulousain, Loïs Gaudebert a développer une application permettant de suivre l’actualité du Stade Toulousain. Le calendrier, les matchs, les joueurs, les résultats… http://www.facebook.com/video/video.php?v=436392813926 S’il vous arrive souvent de prêter CD, DVD ou autres produits auquel vous tenez mais que vous avez du mal à répertorier et surtout à récupérer, alors l’application Collecto proposée par David Catuhe devrait vous être d’une aide très importante : http://www.facebook.com/video/video.php?v=431591263926 Envie de voyager et de découvrir Barcelone, Loïs Gaudebert a développer un guide de la ville de Barcelone. Cette application vous guidera dans Barcelone, vous fera découvrir les monuments ou endroits intéressants en fonction de vos préférences… http://www.facebook.com/video/video.php?v=436692483926&ref=mf Et enfin pour terminer, Speak-O-Matic, application proposée par Guillaume Lacasa. Cette application vous génère des phrases diverses et variées. Personnellement je ne pense pas réussir un jour à placer une de ses phrases, bien que, après quelques bières, elles prennent un sens, donc sait-on jamais… J’ai cependant un coup de coeur pour la musique et la vidéo, qui nous montre le talent d’acteur de quelques Bewisiens : http://www.facebook.com/video/video.php?v=430590738926 
Les congés arrivent à leur fin pour pas mal de monde, il est donc temps de faire le bilan de l’été et de se remettre au travail! Pour moi l’été a très bien commencé, puisque j’ai été récompensé du titre MVP Visual Studio ALM par Microsoft. Ensuite, à part faire les fêtes de la Madeleine je me suis motivé à passer la certification 70-512 Administration de TFS 2010. Pas de grande surprise, tous les points sont abordés : installation et configuration de TFS, Lab Management, TFS Proxy, Build… Bref, tous les sujets annoncés sur Microsoft Learning sont abordés dans l’exam. Actuellement Microsoft ne fournit aucun cours ni bouquin pour le préparer. Toutefois une bonne connaissance de TFS, du guide d’installation et du guide d’administration suffisent. L’été continue à être agité pour moi puisque je découvre actuellement XNA et Windows Phone 7. D’ailleurs à ce sujet, je vous conseille d’aller voir cette magnifique vidéo de Nova4Phone qui participe au concours WP7 (si vous aimez, “likez” et faites tourner la vidéo). Nova4Phone est le moteur 3D pour Windows Phone développé par David Catuhe, qui tourne sur un vrai device. La fluidité est époustouflante! Like, like, like!
Je viens de publier un nouvel article sur le développement 32bits et 64bits. “Avec l’arrivée du Framework 4.0 et de Visual Studio 2010, Microsoft a fait de gros effort sur le développement d’applications 64bits avec Visual Studio 2010. Patrice Lamarche nous livre dans ce billet l’un des changements majeur concernant la politique de compilation de vos projets UI avec Visual Studio 2010. Au-delà de l’IDE, le Framework 4.0, et plus précisément la classe System.Environment, nous fournit des propriétés permettant de savoir si l’OS est en 32 ou 64bits, ou de récupérer le répertoire Program File (x86) ou encore le répertoire Windows\SYSWOW64… Quelles sont les différences entre ces OS ? Comment des applications 32 bits et 64 bits cohabitent ? Comment les prendre en compte dans nos développements ?”
Je ne suis pas trop pour ce genre de post, mais mon ami et collègue Sebastien Pertus m’a passé la patate chaude, et je me dois donc de la renvoyer… - Mon nom, Laut s'écrit avec un T et se prononce lo, pas Lote! Je suis du nord et dans le nord on ne dit pas moinsse...
- 95% des gens l'oublis, mais mon prénom, Benoît, s'écrit avec un accent circonflexe sur le i.
- Ben, BenBen, CorBen (Dallas), PtiBen, $uddenBen, Biniouze, Strogoff, Eole, Tic (de Tic et Tac) et dernièrement Dr House, sont quelques uns des surnoms que l’on pu me donner ces 15 dernières années.
- Je suis né à Monaco. Entendez par là la clinique Monaco à Valenciennes. Ville célèbre notamment pour son (ancien) maire, JL Borloo qui a fait venir Toyota pour fabriquer la Yaris (seul endroit dans le monde où elle est fabriquée) et qui est notamment à l'origine de la remontée du VAFC en ligue 1 (ancien club USVA).
- A 1 an je tombe 2 fois de suite de ma chaise haute (je voulais me balancer comme sur une balançoire), à 5ans ma sœur me casse le pouce en me lançant une boule de pétanque sur la main, à 11 ans je me fais renverser sur un passage piéton par une auto école. A 30 ans, à Bewise, accident de travail, je me fais une entorse en descendant les escaliers…
- Mon premier vrai concert en tant que spectateur : 1996, j'avais 16ans, ACDC pour la tournée Ballbreaker. Mon groupe mythique depuis l'age de 12 ans. Je peux dire que j'ai connu Bon Scott, chanteur mythique d'ACDC, mort le 19 février 1980, puisque je suis né 26 jours avant ce drame. J'aime beaucoup de style de musique : Hard Rock, Blues Rock, Heavy Metal, Death Metal, Power Metal, Trash Metal, Dark Metal Melodyc, Black Metal Symphonic Alcolic... Mais ça ne m'a pas empêché d'aller à des concerts de JJ Goldman, Mano Solo, les ogres de Barback ou encore Marcel et son orchestre.
- Guitariste aux cheveux longs, j'ai joué 8 ans dans un groupe de Metal. Une dizaine de concerts dans des bars et discothèques, une quinzaine de compos et une corde cassée à chaque début de concert. Je joue sur une guitare Ibanez et un gros Marshal 100W 2 corps!!
- Un jour, un grand sportif j'ai été. Gymnastique : je faisais tous les grand écarts possible (costal, facial, nasal...). Handball : j'ai participé aux sélections du nord. Cyclisme : à 17ans je faisais ma première traversée de la France, 1100km en 8jours de Valenciennes (Nord) à Pamiers (Ariège). A la même période je gravissais pour la première fois le Mont Ventoux et le Tourmalet.
- Si je devais me comparer à une boisson, ça serait la bière : frais, pétillant, du caractère, doux et amer à la fois... Mes préférées : Triple de Bruges et Triple Karmeliet.
- J’habite Toulouse depuis 5 ans bientôt, mais je reste bien sur très attaché au Nord. Je suis notamment un grand supporter du VAFC que j’ai du voir pour la première fois au stade Nungesser à 10 ans. 8ème de ligue 1 en 2009-2010, pour les personnes qui ne le savent pas, Valenciennes est de retour en ligue 1 depuis 2005.
Je passe maintenant la main à JP.
Avec un collègue nous nous sommes posés quelques questions sur le développement autour d’Office et surtout sur le déploiement des PIA (Primary Interop Assembly). La problématique est la suivante : sur nos postes nous avons Office 2010 d’installé. Nous avons donc référencé, dans notre projet de manipulation de documents Office, les PIA d’Office 2010. Ces assemblies permettent aux applications .Net d’utiliser les fonctionnalités Office. Ceci signifie que lors du déploiement de l’application, il faut qu’Office et les PIA soient installés sur le poste client (ou sur le serveur si c’est une application web par exemple). Pour information, avec Office 2010, les PIA sont forcément installées, ce qui n’était pas le cas avec les anciennes versions. Elles ne sont d’ailleurs pas encore “redistribuable” en version 2010. Nous venons de découvrir que sur le serveur c’est Office 2007 qui est installé, or le projet doit à terme fonctionner avec Office 2010… Doit-on changer nos références? [Edit] Non. Lorsque l’on instancie une classe Application (pour Word par exemple), celle-ci est instanciée (en interne) en utilisant le ProgID “Word.Application” et non “Word.Application.14”. Ce ProgID est indépendant de la version d’Office installée et donc si les PIA 2007 sont installées, notre application fonctionnera. La version installée sur le serveur est Office 2007 (version 12.0). Si nous avions référencé les PIA 12.0, après installation d’Office 2010 la redirection se ferait automatiquement. Office installe des assemblies de redirection de version dans le GAC (Policy.12.0.Microsoft.Office.Interop.XXX). Chaque assembly est accompagnée d’un fichier de configuration qui indique à la CLR que lorsque notre application lui demandera de charger une PIA 12.0, elle devra lui fournir la version 14.0. Pour s’en assurer, il suffit d’ouvrir un Command Prompt et de se rendre dans le répertoire du GAC de l’assembly Policy comme indiqué ci-dessous : Dans le répertoire Policy.12.0.Microsoft.Office.Interop.Word se trouvent une assembly et un fichier de config. Pour éditer le fichier de configuration il suffit depuis le command prompt de taper le nom de fichier. Ceci aura pour effet de l’ouvrir dans Visual Studio. Nous pouvons ainsi visualiser le fameux BindingRedirect de la version 12.0 vers la version 14.0 :  Les redirections d’Office 2003 vers 2010 sont également présentes dans le GAC.
Parmi les nombreuses nouveautés du développement d’addin VSTO, nous retrouvons bien évidemment le Ribbon, qui est maintenant disponible depuis l’Explorer d’Outlook 2010. A l’ombre de cette grande nouveauté, d’autres font leur apparition mais passent un peu inaperçu. Dans le développement d’addin VSTO pour Outlook 2010, il est aujourd’hui possible de définir des icones personnalisées pour certains répertoires. Comme vous pouvez le voir sur l’image ci-contre, j’ai défini une icône custom pour 2 de mes répertoires. La classe MAPIFolder possède maintenant une méthode SetCustomIcon qui prend en paramètre une instance de la classe StdPicture : - /// <summary>
- /// Sets a custom icon that is specified by Picture for the folder
- /// </summary>
- /// <param name="Picture">Specifies the custom icon for the folder</param>
- void SetCustomIcon(stdole.StdPicture Picture);
Afin d’obtenir une instance de type StdPicture à partir d’un objet de type Bitmap (ou Image), il faut créer une classe qui hérite de AxHost. Cette classe est un wrapper de contrôle ActiveX et possède une méthode statique (et protected) qui se nomme GetIPictureDispFromPicture : - sealed public class ConvertImage : System.Windows.Forms.AxHost
- {
- private ConvertImage()
- : base(null)
- {
- }
- public static stdole.StdPicture ConvertToStdPicture(System.Drawing.Image image)
- {
- return (stdole.StdPicture)GetIPictureDispFromPicture(image);
- }
- }
Le tour est joué, il n’y a plus qu’à faire appel à la méthode SetCustomIcon : - private void SetCustomIcon(MAPIFolder folder, System.Drawing.Bitmap image)
- {
- folder.SetCustomIcon(ConvertImage.ConvertToStdPicture(image));
- }
Comme je vous le disais dans mon dernier post, CodePlex propose d’utiliser les nouveaux outils de DotFuscator 4.0 pour analyser son application. Qui utilise l’application, quelles sont les fonctionnalités utilisées… DotFuscator nous propose d’injecter du code dans nos assemblies afin d’obtenir ses éléments de mesure. Ce weekend j’ai donc creusé l’utilisation de ces outils et je vous propose de les découvrir à travers cet article. Bonne lecture !
|