Visual Studio 2010 Trucs et Astuces

Ci-dessous quelques trucs et astuces pour une utilisation optimale de Visual Studio 2010.

Les raccourcis claviers

Tout d’abord un lien vers les raccourcis clavier de Visual Studio ils vous seront très utile.
http://www.microsoft.com/download/en/details.aspx?id=13189

Si vous en avez que 6 à retenir, les voici:
_Ctrl + ‘,’ pour le « Navigate To » qui regroupe le Ctrl + N et Ctrl + Shift + N de Resharper.
_Ctrl + K + C et K + U pour commenter et dé-commenter du code.
_Ctrl + K + D pour formater le document en cours.
_F12 -> go to reference.
_Ctrl + ‘.’ affiche les aides possible.
et l’indispensable IntelliSense Ctrl+Espace.
Je ne rappellerai pas toutes les nouveautés apportées à Visual Studio 2010, ces dernières ont été assez commentées sur internet.

Activer la compilation incrémentale en tâche de fond

Disponible depuis Visual Studio 2008 Sp1, cette fonctionnalité vous permet d’avoir une vérification en continue de votre code sans avoir besoins de recompiler votre projet.
Pour l’activer, allez dans Options->Text Editor->C#->Advanced, et cocher
« Underline errors in the editor »
et « Show live semantic errors »
Pour plus de détails : http://ira.me.uk/2008/09/01/switch-offon-visual-studio-2008-background-compilation/

Afficher les numéros de ligne

Options->Text Editor->C# cocher « Line numbers »

Suivre le fichier courant dans le solution explorer

Options->Projects and Solutions cocher « Track Active Item in solution Explorer »

Plugins

Pour améliorer votre environnement vous pouvez installer les plugins (extensions) suivant:
_Resharper de jetbrains (lien)
_Highlight all occurrences of selected word (lien)
_Productivity Power Tools (lien)

Désactiver l’analyse de code de Resharper 5 à la volée

Test unitaire Resharper + NUnit + VS 2010

Pourquoi des tests unitaires?

Pour tout un tas de raisons. En vrac:

  • permet de définir rapidement une spec
  • oblige à réfléchir avant de coder
  • la maintenance est simplifiée, si on a une bonne couverture de test unitaire, il suffit de relancer nos tests pour détecter les régressions.
  • être sûr de la qualité de ce que l’on envoie en production

en gros que des avantages…

Pourquoi Resharper pour les test unitaires?

Le plugin Resharper pour Visual Studio propose, entre autre, une interface d’exécution pour les tests unitaire.

Le problème

passer de Visual Studio 2008 à Visual Studio 2010.

Pourquoi est-ce un problème?

Le problème est une limitation de Visual Studio 2010, voir MS Connect Bug pour les détails http://connect.microsoft.com/VisualStudio/feedback/details/453668/cant-change-target-framework-for-test-project-in-vs2010
Cette limitation impose de passer les projets de test en .Net 4.0 ce qui peut avoir quelques effets de bord, surtout quand on utilise des lib externes.

Solution 1
Si vous le pouvez, passez vos projets de test en 4.0. Vous pourrez continuer d’exécuter dans VS 2010 vos tests unitaires avec resharper.

Solution 2
Si vous êtes dans mon cas, où vous des dépendances sur des libs en 3.5 ou de la post compilation n’acceptant pas un mix de version, je vous propose de passer en ligne de commande avec par exemple quelque chose comme:

RunUnitTest.cmd

@echo off
setlocal enabledelayedexpansion

set __UnitLib.1="C:\ProjUnitTestPath\bin\Debug\LibTest1.dll"
set __UnitLib.2="C:\ProjUnitTestPath\bin\Debug\LibTest2.dll"
set __UnitLib.3="C:\ProjUnitTestPath\bin\Debug\LibTest3.dll"

FOR /F "tokens=2* delims=.=" %%A IN ('SET __UnitLib.') DO (
ECHO Unit Test: %%A = %%B
if !__UnitLibAll!=="" ( set __UnitLibAll=%%B
) else set __UnitLibAll=!__UnitLibAll! %%B
)
ECHO Unit Tests: %__UnitLibAll%

"C:\Program Files (x86)\NUnit 2.5.3\bin\net-2.0\nunit-console-x86.exe" %__UnitLibAll%

Vous pouvez bien sûr faire générer à NUnit un fichier xml de résultat interprétable par un serveur d’intégration continue comme Hudson avec le paramètre « /xml=nunit-result-output.xml ».

Solution 3

Vous avez aimé la ligne de commande pour exécuter l’ensemble des tests, mais vous ne la trouvez pas très pratique pour mettre des break points?
Une solution consiste à attacher le programme NUnit à la bibliothèque de test unitaire…

Etapes à suivre:

  1. Click droit sur votre projet de test -> Properties
  2. Allez dans l’onglet Debug
  3. Sélectionnez « Start external program » et remplir avec « C:\Program Files (x86)\NUnit 2.5.3\bin\net-2.0\nunit-console.exe »
  4. Dans « Command line arguments » insérez le nom complet de votre assembly exemple « truc.toto.test.dll »

Pour débugger:
Click droit sur le projet -> Debug -> Start new instance

Pour exécuter seulement quelques-uns des tests, ajouter l’option « /runselected »

Solution 4

Vous pouvez attacher la GUI de NUnit à Visual Studio en mode debug. Ceci vous permettra de sélectionner vos tests unitaires.
NUnit Gui

Solution 5 (Mise à jour du 12/02/2011)

Enfin, vous pouvez toujours faire cohabiter une solution de projet Visual studio 2010 avec une solution Visual studio 2008.
Pour cela,

  1. vous ne touchez pas à votre solution Visual studio 2010.
  2. créez un sous répertoire ‘UnitTest’ dans votre arborescence de solution.
  3. dans ce répertoire, créez une nouvelle solution vierge avec Visual Studio 2008
  4. à partir de Visual Studio 2008 ajouter vos projets de test unitaires et leurs dépendances aux strict minimum, le compilateur reprenant le contenu du répertoire d’exécution préexistant.

A part quelques warnings vous disant que Visual studio 2008 ne peut pas compiler du .Net 4, tout devrait marcher.