Wilfried Woivré & .Net

LinqPad : Quelques fonctionnalités cachées !

JUIN12

J’avais publié il y a bien longtemps un article sur le logiciel LinqPad, comme quoi c’était un des must have à avoir pour tout développeur !

 

Alors à force de l’utiliser, j’ai enfin trouvé quelques fonctionnalités que je trouve fort utiles, et qu’on ne trouve pas dans les exemples de bases !

 

La première, LINQPad, votre nouvel fenêtre de commande.

 

image

 

Vous pouvez donc lancer vos commandes depuis LINQPad, vos “iisreset”, et tout ce que vous voulez !

 

Et ce n’est pas fini ! En tant que commande, vous pouvez aussi saisir des valeurs durant l’exécution de votre programme

 

image

Donc les ConsoleApplication1 à infini, c’est totalement fini, si maintenant vous pouvez même saisir des valeurs dans cet outil !

 

Bon la console c’est bien jolie, mais un peu de html, c’est encore plus, c’est aussi possible de customiser vos textes de sorties via la méthode Util.RawHtml

 

image

il est donc possible de configurer vos sorties de résultats de programme via LinqPad, afin d’y ajouter un peu d’HTML afin que ce soit plus lisible !

 

Et pour ceux que ça intéresse, il est aussi possible d’afficher une page web dans la fenêtre de résultat !

image

 

Voilà, alors comment j’ai trouvé ces features, puisque je cherchais à ajouter du HTML dans ma fenêtre de sortie afin de créer un rapport sur les nouveautés des API REST Azure ! Il faut suffit d’utiliser Reflector, ou un outil du genre, et de désassembler l'assembly de LinqPad, et vous allez trouver la classe Util !

 

Bon je ne dis pas que maintenant vous pouvez vous abstenir de Visual Studio, mais bon ça ne devient pas loin quand vous devez faire du code jetable !

Remonter

Utiliser TFS Preview dans vos projets

OCTO19

Premièrement il vous faut un accès à TFS Preview, pour cela rien de plus simple, rendez-vous sur https://tfspreview.com/ et créer un compte, personnellement ils m’ont activé le mien en 5 jours (il y a une liste d’attente, mais j’ai eu la chance d’en avoir un avant)

Pour l’utiliser avec Visual Studio 11, aucun problème le support est natif, par contre pour Visual Studio 2010, il vous faudra le SP1 et un KB comme l’explique mon précédent article : http://blog.woivre.fr/?p=594

 

Vous pouvez vous connecter sur le web à votre adresse personnelle sur TFS Preview, pour moi https://wilfriedwoivre.tfspreview.com

 

Pour le moment il est possible de se connecter avec Windows Live, mais on espère tous qu’on pourra le faire avec notre Active Directory professionnelle dans la version finale !

 

image

 

Vous pouvez remarquer qu’ils utilisent Access Control Service eux aussi !

 

Pour découvrir plus en détails les nouveautés de TFS 11 (qui est la version disponible sur Azure) je vous laisse entre les mains d’Etienne Margraff, MVP ALM, et il connait son sujet : http://blogs.developpeur.org/etienne/archive/2011/09/16/tfs-11-quelles-nouveaut-s.aspx

Remonter

Windows Azure : Savoir si on se trouve sur l’émulateur ou dans le Cloud

OCTO18

 

Lorsqu’on développe une application pour Windows Azure, il est souvent utile de savoir si on se trouve sur une instance Azure ou si on se trouve sur notre émulateur fraichement refait.

 

Depuis l’Azure Toolkit 1.5, il est possible de savoir si on se trouve sur l’émulateur grâce à la propriété RoleEnvironment.IsEmulator.

 

if (RoleEnvironment.IsAvailable)
{
    // Cloud or Emulator
}
if (RoleEnvironment.IsEmulated)
{
    // Only in Emulator
}

 

Steve Marx en parle sur son blog, c’est en anglais, mais si vous voulez des infos sur Azure, c’est ce blog qu’il faut lire (en plus du mien, et celui de ZeCloud). Il montre de plus comment l’utiliser avec les Start Up Task, si ce n’est pas utile ça !

Remonter

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

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