Another .NET Blog

To content | To menu | To search

Tag - Visual Studio

Entries feed - Comments feed

Wednesday 14 July 2010

[MSBuild] How to reference an assembly specific to the OS architecture

This article is an english translation of this one.

This article is designed for those who, like me, must deal with 2 versions of a same assembly, depending on you have to work on a 32 or 64 bits OS.

In my case, the faulted assembly is System.Data.SQLite.dll, which allows to use SQLite databases under the .Net framework. Therefore, this assembly exists in 2 flavors: 32 and 64 bits. The problems began to arise when I started to build some unit tests to check the behaviour of my repositories. At the beginning, I was developing on 32 bits PC, referencing the 32 bits assembly, and all was fine. But since then, I work as well on a 32 bits PC as on a 64 bits one, and I always have to delete the reference to the assembly, and replace it with a reference to the assembly with the same bitness as the architecture on which the tests are runned.

Not so great...

But that time is now revolved! And if you encounter the same problem, know that a solution does exist. And here it is...

Continue reading...

Friday 2 July 2010

[MSBuild] Comment référencer l'assembly spécifique à l'architecture de la plateforme

Cet article est destiné à ceux qui, comme moi, doivent jongler entre 2 versions d'une même assembly, selon que vous travailliez sur un poste en 32 bits ou en 64 bits. Dans mon cas, le fichier incriminé est System.Data.SQLite.dll, qui permet d'utiliser des bases de données sous SQLite, depuis le framework .NET. Cette assembly existe donc, vous l'aurez compris, en 2 exemplaires: 32 et 64 bits.

Les soucis ont commencé à arriver pour moi lorsque j'ai commencé à mettre en place mes tests unitaires pour tester le comportement de mes repositories. Car au début du développement, j'étais sur un PC 32bits, avec la DLL 32bits référencée, et tout allait bien. Mais, je me suis mis à travailler aussi bien sur une machine 32 bits que sur une machine en 64 bits, et à chaque fois je devais supprimer la référence vers l'assembly, et la remplacer par une référence vers l'assembly spécifique à la plateforme sur laquelle les tests étaient lancés.

Bien lourd donc...

Mais depuis, c'est fini! Et si vous avez également le même souci, sachez qu'il existe une solution. Que voici sans plus attendre...

Continue reading...

Wednesday 10 February 2010

[VS2010] La Release Candidate en téléchargement libre

Comme annoncé plus tôt dans la semaine, la release candidate de VS 2010 est désormais téléchargeable pour tous, à cette adresse.

Bon download et profitez bien de toutes les améliorations de cette version qui sera, je vous le rappelle, la dernière avant la version finale de la fin du mois d'avril!

[VS] Quelques astuces pour le debugger

Voici deux astuces qui je l'espère vous feront gagner du temps lorsque vous aurez à debugger vos applications.

Ne pas s'arrêter dans une propriété / fonction

La première astuce permet de gagner du temps lorsque vous suivez l'exécution d'un programme pas à pas, et que vous ne voulez pas, même en utilisant la commande Step Into (F11) aller dans le corps de propriétés / fonctions qui ne vous intéressent pas. L'exemple le plus flagrant étant les getters des propriétés, surtout quand il n'y a aucune logique dedans.

Par exemple, en utilisant le bout de code suivant:

using System;
using System.Diagnostics;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Employee emp = new Employee("Mike", 28);

            Console.WriteLine(emp.Name);
            Console.WriteLine(emp.Age);
            Console.ReadKey();
        }

        public class Employee
        {
            private string name;
            private int age;

            public Employee(string name, int age)
            {
                this.name = name;
                this.age = age;
            }

            public string Name
            {
                [DebuggerStepThrough]
                get { return name; }
            }

            public int Age
            {
                get { return age; }
            }
        }
    }
}

Si vous mettez un point d'arrêt à la ligne : Console.WriteLine(emp.Name);, et que vous appuyez sur F11, vous allez directement à la ligne suivante, sans passer par le corps du getter de Name. Si vous ré-appuyez sur F11, vous allez cette fois-ci vous retrouver à la ligne get { return age; }.

Très pratique donc pour éviter de se retrouver dans des fonctions sans-intérêt particulier. A noter également que même si vous mettez un point d'arrêt dans le corps d'une fonction marquée par cet attribut, le debugger ne s'y arrêtera pas.

Affichage personnalisé d'une variable

Voici une petite astuce qui peut se révéler très très pratique lorsque vous êtes en plein session de deboguage dans VS, et qui peut surtout vous faire gagner du temps, dès lors que vous devez inspecter souvent les même valeurs d'une instance d'un type.

Si l'on garde le morceau de code précédent, que l'on garde le point d'arrêt au même endroit, et que l'on passe la souris au dessus de la variable emp, voici ce qu'on obtient:

DebuggerDisplay_Before.png

Le debugger affiche le nom du type de la variable au dessous de laquelle se trouve le curseur de la souris. Si vous voulez accéder aux membres de cette variable, vous devez cliquer sur le petit +.

Si vous êtes intéressés uniquement par quelques membres de cette variable, ou si le type de la variable contient un petit nombre de membres et que vous voulez y avoir accès directement sans cliquer sur le +, voici une astuce qui vous sera certainement utile: il vous suffit d'ajouter un attribut à la déclaration de votre classe, comme suit:

[DebuggerDisplay("Employee : {Name} - {Age}")]
public class Employee
{
    //...
}

Et maintenant, lorsque vous passez la souris au dessus de la variable emp, comme précédemment, voici ce que vous deviez obtenir:

DebuggerDisplay_After.png

Il est bon également de savoir que cette astuce fonctionne également avec les classes dérivant de Employee. Si l'attribut DebuggerDisplay n'est pas ajouté aux classes dérivées, c'est l'affichage personnalisé de Employee qui sera utilisé. Mais si vous définissez cet attribut pour les classes dérivées de Employee, vous pourrez bien sûr faire référence aux propriétés de la classe Employee dans le constructeur de l'attribut:

[DebuggerDisplay("Boss : {Department} - {Name} - {Age}")]
public class Boss : Employee
{
    private readonly string department;

    public Boss(string department, string name, int age) : base(name, age)
    {
        this.department = department;
    }

    public string Department
    {
        [DebuggerStepThrough]
        get { return department; }
    }
}

En espérant que cela vous évitera quelques prises de tête lors de vos séances de debugging futures ;)

Thursday 14 January 2010

Configuration d'un serveur d'intégration continue - [Partie 1] - Les bases

On trouve sur internet un paquet de tutoriaux sur la configuration de divers serveurs d'intégration continue, basés sur des solutions différentes (TeamCity, Hudson, Cruise Control.NET...), avec des options différentes (FxCop, avec ou sans tests unitaires...). Le problème est que ces tutoriaux ciblent tout le temps .NET 3.5 ou 2.0 (normal me direz vous) et que les "options" proposées ne me conviennent pas, notamment concernant les tests unitaires (Personne n'utilise donc xUnit?)

Je me suis donc efforcé de faire fonctionner un serveur d'intégration continue qui remplirait les objectifs suivants:

  1. Framework ciblé : .NET 4.0
  2. Librairie de tests unitaires : xUnit
  3. Utilisation d'outils d'analyse de code : FxCop
  4. Couverture de code : nCover

Et je me propose donc de vous en relater les étapes lors de cette série d'articles.

Continue reading...

VS2010 et .NET 4 pour le 12 Avril prochain?

Vu sur developpez.com, les sorties de Visual Studio 2010 et .NET 4 prévues pour le 12 Avril prochain, une RC en Février ?

Le compte à rebours est désormais lancé!

Monday 11 January 2010

Visual Studio 2010: "The application cannot start"

Surprise!

Je lance Visual Studio 2010, et alors que tout fonctionnait parfaitement bien vendredi dernier, aujourd'hui monsieur me fait un caprice et ne veut plus s'ouvrir, et me donne un message d'erreur assez laconique: "The application cannot start"

Après une petite recherche sur le web, il s'avère que cette erreur peut être due à un fichier de préférences corrompu, ou bien à une tentative d'import de police non TrueType créée avec une version de VS inférieure. Comme je n'ai jamais approché de près ou de loin ce deuxième point, je me suis donc douté que ça devait bien être le fichier des préférences (Elémentaire mon cher watson).

La solution proposée, qui a très bien fonctionné pour moi: lancer VS via la ligne de commande en utilisant le flag resetuserdata:

devenv /resetuserdata

Pour info, l'exécutable de VS2010 se trouve dans ce dossier : ''C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE''

Bien évidemment, attendez vous à perdre toutes vos customisations. Pensez donc à les sauvegarder en copiant le fichier CurrentSettings.vssettings qui se trouve ici : “%USERPROFILE%\Documents\Visual Studio 2010\Settings !

Saturday 9 January 2010

VS2010: Nouvelle page de résumé pour le profiler

Vu sur le blog de l'équipe en charge du développement du profiler pour VS2010, les nouveautés concernant la page de résumé du profiling d'une application. A lire ici.

A lire également ici, une sorte d'introduction à comment lancer une séance de profiling grâce au raccourci clavier ALT+F2

Et pour finir, leur tout dernier article explique comment lancer une session de profiling sur une série de tests unitaires.

Bonne lecture!

Tuesday 5 January 2010

VS2010 / xUnit / Resharper : enfin, ça marche!

Bonne nouvelle!

Cela faisait un moment que je tentais désespérément de lancer des tests unitaires sous VS2010 avec xUnit et Resharper 5, sans succès, comme vous vous en doutez. La seule solution avait été de recompiler le GUI de xUnit en .NET 4 et de l'utiliser pour les tests. Ce que je ne trouve pas très pratique, dans la mesure où ça oblige à jongler entre plusieurs applications. C'est toujours plus simple de rester dans son environnement de travail.

Eh bien c'est désormais possible. C'est extrêmement simple, en voici la procédure:

  1. Télécharger et installer la nouvelle version de Resharper 5.0, qui est désormais en Beta.
  2. Télécharger la dernière version de xUnit Contrib
  3. Installer xUnitContrib

Une fois ces 3 étapes faites, lancez VS2010 et ô surprise:

Preview_xUnit_R__VS2010.png

En voilà une bonne nouvelle pour une rentrée de Vacances :)

Friday 18 December 2009

VS 2010 RC en février 2010

Finalement il y aura bien une nouvelle version intermédiaire de VS2010 avant la version finale:

In October, we shipped Beta 2 of Visual Studio 2010 and .NET Framework 4. Since then, we have received a lot of helpful, constructive feedback from you all. Thank you.

A lot of you have given us very positive feedback on the new capabilities of VS 2010 and .NET Framework 4 and are very happy with the breadth of value that we are poised to deliver in this release.

At the same time, you have also given us feedback around performance issues, specifically in a few key scenarios including virtual memory usage. As you may have seen, we significantly improved performance between Beta 1 and Beta 2. Based on what we’ve heard, we clearly needed to do more work. Over the last couple of months, our engineering team has been doing a push to improve performance. We have made significant progress in this space since Beta 2.

With these improvements in the product, we do want to make sure that they truly address the performance issues while continuing to maintain a high quality bar. As a result, we are going to extend the beta period by adding another interim checkpoint release, a Release Candidate with a broad “go live” license, which will be publicly available in the February 2010 timeframe.

Since the goal of the Release Candidate is to get more feedback from you, the team will need some time to react to that feedback before creating the final release build. We are therefore moving the launch of Visual Studio 2010 and .NET Framework 4 back a few weeks.

Please continue to send us your feedback. It truly has an impact on the product development process and helps us to deliver a high quality product.

On ne peut que s'en féliciter, vu le nombre de grognements de plus en plus importants des utilisateurs de l'actuelle Beta2 quant aux problèmes de performance de l'IDE.

La source originale se trouve ici.

Wednesday 11 June 2008

Création de templates personnalisés dans VS2008

Ca faisait quelques jours que je me promettais de chercher sur la toile comment créer avec Visual Studio 2008 des templates de projets ou de fichiers, toujours bien pratiques lorsqu'on utilise souvent le même type de fichiers (comme les nombreux projets à créer pour [Euler Project] par exemple)

Coup de bol, je n'ai même pas à chercher, la [réponse] est venue d'elle-même dans mes feeds RSS.

Profitez-en au passage pour bookmarker ce nouveau [site], qui propose des vidéos d'apprentissage très bien foutues.

Have fun!

Thursday 22 May 2008

Ajouter le mot-clé public aux classes créées par défaut par VS2008

Par défaut, Visual Studio 2008 crée les classes sans le mot-clé public.

Voici une manière très simple de modifier ce comportement par défaut.

Continue reading...