Wilfried Woivré & .Net

Utiliser TFS Preview avec Visual Studio 2010

OCTO8

Si vous avez la chance d’avoir accès à TFS Preview sur Azure, vous avez sûrement du vouloir l’essayer avec autre chose que Visual Studio 11 Developer Preview, par exemple Visual Studio 2010.

Or lorsque vous voulez rajouter la liaison à votre TFS dans Visual Studio, vous avez cette jolie erreur

image

 

En effet, il vous faut appliquer un KB afin que votre Visual Studio puisse se connecter à un TFS Preview sur Azure, la raison est je pense l’ouverture de la popup pour les informations de connexion.

Voici le lien de la KB : KB2581206 Notez qu’il vous faudra le SP1 de Visual Studio d’installé.

Remonter

Afficher des informations dans la fenêtre de sortie de Visual Studio

MAI19

Quand on fait du XAML que ce soit en WPF, Silverlight ou WP7, on est bien heureux de voir apparaitre ces petits messages d’erreur dans la fenêtre de sortie lorsque l’on est en mode debug de notre application !

Ici comme on peut le voir il s’agit uniquement d’une erreur de binding, qui nous informe que la propriété “FirstName” n’a pas été trouvée :

 

image

 

Et si on voyait comment ajouter nos propres messages dans cette fenêtre, et bien tout est là pour nous aider, c’est très facilement faisable grâce au namespace System.Diagnotics

 

this.Loaded += (sender, e) => System.Diagnostics.Debug.Print("Message perso => Un petit test ?");

On obtient en mode DEBUG, notre message personnel dans la fenêtre de sortie

image

Et comme la vie est bien faite, en mode release, rien n’apparait !

 

Bon bien entendu, rien ne sert de polluer cette fenêtre outre mesure, mais c’est toujours mieux qu’une trentaine de message box d’information pour lancer votre programme et être sûr que tout ce passe bien !

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

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