Wilfried Woivré & .Net

Créer ses templates sous Visual Studio 2010

AVRI4

Visual Studio 2010 étant un outil formidable, il a surtout l’avantage de pouvoir être enrichi soit par des plugins, soit par de nouveaux templates de projets ou d’éléments. Nous allons voir aujourd’hui comment créer ses différents templates.

Prenons les templates de projets qui par défaut vous permettent facilement de créer des applications, cependant si vous êtes comme moi, vous êtes à chaque fois obligé de faire quelques petites modifications avant de commencer à proprement dit le code. Par exemple ajouter les différentes classes pour faire du MVVM, on va donc créer un nouveau template de projet qui contient par défaut les classes dont nous avons besoin. Pour cela rien de plus il suffit d’ouvrir Visual Studio et de créer un projet de départ qui correspond à vos besoins.

image

Le nom du projet importe peu, donc vous pouvez laisser celui par défaut. Ensuite vous n’avez qu’à modifier votre projet selon vos besoins, donc dans mon exemple, il faut uniquement ajouter une classe ViewModelBase, l’implémenter et déplacer le fichier MainWindow dans un dossier Views comme on peut le voir ci dessous

 

image

 

Bon c’est assez basique comme modification, mais vous pouvez rajouter bien d’autres choses, comme plus de classes, des références ! Et beaucoup de code préexistant que vous avez déjà !

Maintenant on va donc créer un template de tout ça ! Et quand je disais que Visual Studio était un outil formidable, je ne blaguais pas, puisque c’est tout simplement dans le menu File/Export Template … On a donc une fenêtre de ce type qui apparait

image

On va donc pouvoir choisir de créer soit un template de projet, soit un template de fichier. Commençons donc par le template de projet :

image

On va donc pouvoir le nommer, ainsi que lui ajouter une description et différentes images. De plus il est possible d’importer directement le projet dans Visual Studio, ce que l’on ne va pas faire pour le moment. Il suffit de terminer l’assistant, et là on va avoir une fenêtre explorer qui va s’ouvrir contenant un zip de notre application. On va donc l’extraire pour en analyser le contenu qui est celui-ci

image

On voit donc non pas par magie notre projet accompagné d’un fichier Icône ainsi qu’un fichier appelé MyTemplate qui est en fait un fichier XML que l’on va analyser

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
  <TemplateData>
    <Name>WPF Application with MVVM</Name>
    <Description>Application WPF with ViewModelBase</Description>
    <ProjectType>CSharp</ProjectType>
    <ProjectSubType>
    </ProjectSubType>
    <SortOrder>1000</SortOrder>
    <CreateNewFolder>true</CreateNewFolder>
    <DefaultName>Application WPF with MVVM</DefaultName>
    <ProvideDefaultName>true</ProvideDefaultName>
    <LocationField>Enabled</LocationField>
    <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
    <Icon>__TemplateIcon.ico</Icon>
  </TemplateData>
  <TemplateContent>
    <Project TargetFileName="WpfApplication5.csproj" File="WpfApplication5.csproj" ReplaceParameters="true">
      <ProjectItem ReplaceParameters="true" TargetFileName="App.xaml">App.xaml</ProjectItem>
      <ProjectItem ReplaceParameters="true" TargetFileName="App.xaml.cs">App.xaml.cs</ProjectItem>
      <Folder Name="Properties" TargetFolderName="Properties">
        <ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
        <ProjectItem ReplaceParameters="true" TargetFileName="Resources.resx">Resources.resx</ProjectItem>
        <ProjectItem ReplaceParameters="true" TargetFileName="Resources.Designer.cs">Resources.Designer.cs</ProjectItem>
        <ProjectItem ReplaceParameters="true" TargetFileName="Settings.settings">Settings.settings</ProjectItem>
        <ProjectItem ReplaceParameters="true" TargetFileName="Settings.Designer.cs">Settings.Designer.cs</ProjectItem>
      </Folder>
      <Folder Name="ViewModels" TargetFolderName="ViewModels">
        <ProjectItem ReplaceParameters="true" TargetFileName="ViewModelBase.cs">ViewModelBase.cs</ProjectItem>
      </Folder>
      <Folder Name="Views" TargetFolderName="Views">
        <ProjectItem ReplaceParameters="true" TargetFileName="MainWindow.xaml">MainWindow.xaml</ProjectItem>
        <ProjectItem ReplaceParameters="true" TargetFileName="MainWindow.xaml.cs">MainWindow.xaml.cs</ProjectItem>
      </Folder>
    </Project>
  </TemplateContent>
</VSTemplate>

 

Donc on peut voir qu’il référence tout le contenu de mon template, ainsi que toutes les informations que j’ai renseigné lors de mon export. Et une dernière chose, qui est le nom par défaut du projet. Et comme on peut le voir ici “WPF Application With ViewModelBase” n’est pas un nom super sexy pour un projet, et de plus il contient des espaces, on va donc le remplacer par un simple WpfApplication. Puis en suite réinjecter le fichier Template dans le zip initialement créé, où en créer un nouveau. Il faut ensuite importer ce projet dans Visual Studio, pour cela il vous suffit d’aller dans le dossier Visual Studio, dans vos documents, et d’y ajouter votre zip comme ci-dessous

image

Et là, vu que la vie est très faite, vous pouvez voir votre projet dans Visual Studio

 

image

 

On notera donc qu’il est préférable de bien mettre une icône histoire que ce soit esthétiquement plus sympatique pour le développeur. Quand on créé un nouveau projet de ce type, appelé par exemple ApplicationTest, on peut voir que Visual Studio se charge bien de renommer correctement les namespaces selon la solution

image

Donc maintenant qu’on a créé notre nouveau template de projet, passons au template de fichier. On va donc créer un fichier de type ViewModel, et commencer son application, on va donc avoir un rendu de ce type

using System;

namespace WpfApplication5.ViewModels
{
    public class MainViewModel : ViewModelBase
    {
        public override void OnLoaded()
        {
            throw new NotImplementedException();
        }

        public override void OnUnloaded()
        {
            throw new NotImplementedException();
        }
    }
}
Quand on export un Item, on voit apparaître un écran qui nous permet de choisir le fichier que l’on veut exporter
image

On doit ensuite ajouter les différentes références que l’on veut inclure de base dans notre fichier

image

 

Il suffit après de l’enregistré et de le mettre dans votre dossier ItemTemplate de Visual Studio, comme on peut le voir ci-dessous.

image

On le retrouve donc bien dans notre Visual Studio selon l’arborescence qu’on a défini

 

image

Bien entendu le nom de la classe est correctement modifié lorsqu’on créé un nouvel élément.

 

Voilà une petite astuce qui peut vous être utile si vous voulez encore un peu plus customiser votre Visual Studio, ou même si vous voulez modifier les projets de bases qui y sont disponibles.

Remonter

Grouper vos classes partielles dans l’explorateur de solution.

OCTO22

Pour tout ceux qui programme en .Net, notamment avec C# ou VB.Net, vous avez déjà du créer des classes partielles, surtout si vous travaillez avec Entity Framework et que vous allez lu cet article. Vous pouvez donc, vous retrouver un jour dans ce cas avec deux classes partielles avec des noms un peu différents afin de séparer les différents méthodes pour que cela soit plus facile à lire. image Le problème dans ce cas, c’est que les fichiers OuSuisJeService et RequestService ne sont pas placés côté à côte dans l’explorateur de solution comme on peut le voir image Ce qui serait bien, ça serait de grouper vos fichiers, un peu à la manière des edmx ou des interfaces / code behind. Et bien vu qu’avec Visual Studio on peut presque tout faire. Il suffit pour cela d’éditer votre fichier csproj
  <ItemGroup>
    <Compile Include="GeoLoc\GeoLoc.cs" />
    <Compile Include="OuSuisJeService.cs" />
    <Compile Include="Place.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Repository.cs" />
    <Compile Include="RequestService.cs" />
    <Compile Include="Response.cs" />
    <Compile Include="User.cs" />
  </ItemGroup>
Ensuite vous retrouver votre élément RequestService.cs, que vous allez modifier de cette façon :
  <ItemGroup>
    <Compile Include="GeoLoc\GeoLoc.cs" />
    <Compile Include="OuSuisJeService.cs" />
    <Compile Include="Place.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Repository.cs" />
    <Compile Include="RequestService.cs">
      <DependentUpon>OuSuisJeService.cs</DependentUpon>
    </Compile>
    <Compile Include="Response.cs" />
    <Compile Include="User.cs" />
  </ItemGroup>
Il vous suffit de recharger ensuite votre projet, et voilà la magie opère image
Remonter

Unshelve Pending Changes dans Visual Studio 2010

MAI1

 

Lorsque l’on travaille avec Team Foundation Server ou un autre contrôleur de code source, il est habituel d’effectuer une sauvegarde de son travail que l’on ne veut pas partager sur le serveur, ça peut arriver lors d’une évolution assez longue qui impacte les différentes couches du code.

On peut donc réaliser ceci en réalisant un Shelve, puis un UnShelve pour revenir à l’état que l’on avait sauvegarder ! Donc pour ceux qui connaissaient déjà cela, vous avez du vous apercevoir que dans Visual Studio 2010, ils ont enlevé le UnShelve du Menu Contextuel (à gauche VS 2008, et à droite VS 2010)

image

 image

Pour récupérer vos sauvegardes, il faut maintenant faire  “View Pending Changes”, puis “Unshelve Changes”, et là on peut voir vos différentes sauvagardes !

 

image

Ca peut vous être utile si vous utilisez souvent cette fonctionnalité ! Qui pour information est d’ailleurs très utiles pour passer d’une machine à l’autre sans avoir à “Checkiner” un code qui ne compile pas !

Remonter

NDepend : Un outil bien pratique

JANV5

 

Les outils pour travailler avec .Net sont très nombreux comme on peut le voir sur SharpToolbox. Parmi les plus connus vous avez bien entendu Reflector qui vous permets de faire de l’introspection de code, ou alors ReSharper qui vous rajoute grand nombre de fonctionnalité dans Visual Studio. Vous pouvez trouver la plupart des outils dont vous pourriez avoir besoin dans votre vie courante.

Prenons un exemple, il arrive souvent en entreprise que vous vous retrouviez sur un projet qui a déjà été amorcé par d’autres développeurs. Malgré les différentes documentations à votre disposition il n’est pas toujours évident de connaître toute la structure de l’application et sa complexité au premier coup d’œil. Il y a pour cela un très bon outil qui s’appelle NDepend.

Ce logiciel développé par Patrick Smacchia existe sous la déclinaison de quatre versions (Trial, Academic, OpenSource ou Professional). Le site de l’outil est d’ailleurs très bien fournis en documentation pour l’utilisation de l’outil.

http://www.ndepend.com/Default.aspx

Grâce à celui-ci vous allez pouvoir explorer en détail la complexité de votre code, ceci grâce à un langage proche du SQL. Effectuer des tests de refactoring et analyser l’impact de ceux-ci sur le code. Mais le mieux pour que vous vous fassiez une idée, c’est d’aller voir toutes les démonstrations du site, et après de le tester bien entendu. Et si vous êtes convaincu n’hésitez pas à l’acheter. C’est un investissement utile pour les gros projets il me semble, mais il convient très bien à des projets de taille moyenne bien entendu !

Remonter

Visual Studio 2010 : Intégration de F#

NOVE27

Alors je suppose que vous êtes au courant, Visual Studio 2010 supporte en natif depuis ces premières versions le langage F#.

Basé sur le langage Caml, il intègre toutes les supers fonctionnalités de la plateforme .Net. Enfin bref, aucune démonstration ici, mais je voulais vous montrer un élément à Visual Studio bien utile quand vous voulez jouer un peu avec le F#.

Je suppose donc que comme moi, lorsque vous avez commencé le C#, vous deviez regretter de devoir à chaque fois compiler, lancer votre jolie application console, et attendre le résultat, qui généralement n’était pas le bon ! (Souvenirs, souvenirs …) Vous auriez je pense avoir une joli fenêtre interactive afin de construire votre application pas à pas, mais tout en vérifiant rapidement vos données.

Alors F# et Visual Studio apporte cela, en effet dans les nouvelles fenêtres de notre outil de développement, on peut voir apparaître “F# Interactive” :

image

Cette fenêtre a toujours été en fait mon rêve, pouvoir rapidement coder et tester en même temps sans à avoir à créer un projet console appelé “ConsoleApplication142”

Alors comment ça marche maintenant, dans votre fenêtre vous pouvez écrire tout code F# que vous voulez tester, par exemple :

image

On voit donc ici, la création d’une méthode square qui prend une valeur en paramètre, et qui retourne le carré de celle-ci, puis un appel afin de tester.

Mais très important, on peut voir aussi que la fenêtre F# Interactive retient bien la méthode square en mémoire, pour d’éventuel appel, et donc on peut vraiment tester, ou apprendre le F# au pas à pas.

Voilà, j’essayerai de vous publier divers articles sur la technologies F#, qui m’a l’air très intéressante, et qui je pense peut avoir un bel avenir dans la recherche, calcul algorithmique, et bien entendu les mathématiques.

Remonter