Another .NET Blog

To content | To menu | To search

Miscellaneous


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...

Dernier post... en français !

Eh oui ! Cela fait un moment déjà que l'idée me trotte dans la tête, et je prends enfin cette grande décision: écrire dorénavant tous les articles en anglais.

Ecrire un blog technique sur la programmation, en français, est en soit une bien belle chose. Mais je commençais ces derniers temps à souffrir un peu de ne pas avoir plus de feedback sur ce que j'écris, plus de commentaires. De ne pas pouvoir éventuellement engager des discussions sur les sujets que j'aborde.

Peut-être que le passage à la langue de Shakespeare ne changera rien du tout à cet état de fait. Mais ouvrir ainsi l'audience du site au plus grand nombre devrait quand même, je l'espère, apporter un flux de visiteurs plus conséquent, et donc une probabilité plus importante d'augmenter le nombre d'interactions.

Tous les articles qui ont été écrit jusqu'à maintenant resteront en place, et continueront donc d'être accessibles en français. Mais certains d'entre eux feront en plus l'objet d'une traduction en anglais. Je vais essayer de m'imposer le rythme d'une traduction d'un ancien article à chaque fois que je publie un nouvel article en anglais.

En revanche, les noms des catégories et les tags seront tous traduits, car ce serait improductif d'avoir des doublons à ce niveau là.

Je vous dis donc non pas à bientôt, mais see you soon !

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...

Thursday 8 April 2010

Follow me on twitter !!!

Petite news rapide pour vous dire que vous pouvez suivre les actualités de ce site via twitter, et être ainsi informés de la parution des nouveaux articles en live, ou presque.

Et ça se passe à cette adresse.

A bientôt !

Wednesday 3 March 2010

FXCop et CustomDictionary

Si vous utilisez FxCop, vous avez déjà peut-être été énervé de devoir supprimer manuellement tous les messages de type IdentifiersShouldBeSpelledCorrectly, vous disant que vous avez mal orthographié un mot.

Par exemple, dans mon projet actuel, tous mes namespaces commencent par Emidee, que l'ami FxCop ne reconnait bien évidemment pas.

Pour éviter ce travail fastidieux et pas franchement intellectuel, il est possible d'ajouter le(s) mot(s) en question dans le fichier CustomDictionary.xml situé dans le répertoire d'installation de FxCop. Le souci étant que si vous importez vos sources sur un autre PC, vous ne bénéficierez plus de cet avantage.

La solution à ce problème est toute simple: FxCop va recherche ce fichier CustomDictionary.xml dans 3 emplacements différents:

  1. dans le dossier d'installation de FxCop
  2. dans le dossier de l'utilisateur dont la session est ouverte (où exactement, j'avoue ne pas avoir cherché)
  3. dans le dossier où se trouve le fichier de projet .fxcop

Comme généralement vous placez le fichier de projet fxcop dans vos sources (comme ici par exemple), il vous suffit de créer un nouveau fichier CustomDictionary.xml au même endroit, et le tour est joué!

Et pour en terminer, voici la structure à respecter:

<?xml version="1.0" encoding="utf-8"?>
<Dictionary>
  <Words>
    <Unrecognized />
    <Recognized>
      <Word>Emidee</Word>
    </Recognized>
    <Deprecated />
  </Words>
  <Acronyms>
    <CasingExceptions />
  </Acronyms>
</Dictionary>

A bientôt!

Wednesday 3 February 2010

[Windows] Changement de layout du clavier intempestif

Je ne sais pas si ça ne vous est jamais arrivé, mais ça avait de quoi me rendre fou: le changement de layout du clavier qui passe en mode US, et ce de manière totalement imprévisible. Je me doutais bien qu'il devait s'agir d'un raccourci clavier de VS, mais je n'avais jamais trouvé lequel.

La seule solution que j'avais trouvé jusqu'à maintenant était de fermer l'IDE, et de le relancer. Donc plutôt lourd quand on est concentré sur ce qu'on fait, et que la solution prend du temps à charger.

Et bien bonne nouvelle, je viens juste de trouver quel est le fautif: la combinaisons de touches ALT+SHIFT !!!

Et donc refaire cette combinaison de touches corrige le souci. Enfin...

Edit: Bon en fait ce souci n'est en rien lié spécifiquement à VS, mais vient bien de Windows :s Merci à @Coldorak et à @Gimly81 pour leur explication sur twitter. Pou changer ce comportement, il suffit d'aller dans le Panneau de Configuration, puis dans les options de langages régionaux, de trouver un bouton Change keyboards, puis dans Advanced Key Settings de supprimer le shortcut ALT+SHIFT.

Merci à eux :)

Friday 22 January 2010

Configuration d'un serveur d'intégration continue - [Partie 5] - Bonus

Nous voici enfin arrivés à la dernière partie de cette série d'articles relatifs à la configuration d'un serveur d'intégration continue avec Hudson. Dans cette très courte partie, je vais vous présenter 2 plugins à installer dans Hudson, qui permettront d'avoir sur la page d'accueil de votre projet un résumé des tâches à faire et bugs à résoudre, et également la liste de tous les warnings émis par le compilateur lors de... euh... la compilation :)

Continue reading...

Tuesday 19 January 2010

Configuration d'un serveur d'intégration continue - [Partie 4] - NCover

Partie 4 de cette série d'articles, qui va cette fois se concentrer sur la couverture du code par les tests unitaires, grâce à un outil nommé: NCover. Je ne rentre dans dans les détails sur ce qu'est capable de faire cet outil, leur site est très fourni à ce niveau là. Par contre pour ceux qui ne connaissent pas du tout, cet outil va vous permettre de lancer vos tests unitaires, et va analyser durant l'exécution des tests quelles sont les fonctions de votre code à tester qui sont appelées, et surtout celles qui ne le sont pas. Ce qui permet de savoir où orienter les tests unitaires afin de couvrir l'ensemble du code.

Mais trêve de blablas, et rentrons dans le vif du sujet.

Continue reading...

Configuration d'un serveur d'intégration continue - [Partie 3] - FxCop

Poursuivons cette série d'articles en nous attardant désormais sur l'analyse du code des assemblies grâce à un outil que vous devez tous connaître (et si ce n'est pas le cas, je vous enjoins expressément à vous y intéresser): FxCop. D'une manière similaire à ce que nous avons fait auparavant avec les tests unitaires, nous allons là aussi "programmer" l'exécution de l'analyse dans le fichier NAnt, puis nous allons configurer Hudson pour afficher les résultats de cette analyse directement sur la page du projet.

Continue reading...

Friday 15 January 2010

Configuration d'un serveur d'intégration continue - [Partie 2] - Tests unitaires

Après avoir vu dans la première partie comment installer Hudson, configurer notre premier job et notre premier fichier NAnt, nous allons maintenant voir comment lancer automatiquement dans le processus de compilation l'exécution de tous les tests unitaires de la solution, bien entendus créés avec le framework de test xUnit.

Continue reading...

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...