• VS 2008 !

    Bon, vous le savez certainement si cela vous intéresse, Visual Studio 2008 est dispo pour les abonnés MSDN ! Et avec lui - au travers principalement du framework 3.5 - pleins de nouveautés (enfin plein de nouvelles fonctionnalités, certains concepts sont plutôt ancien - même si remis au goût du jour), je vous donne mes préférées :

    • L'inférence de type - ce qui signifie qu'il n'est plus obligatoire de définir une variable avec un type précis, le compilateur étant assez intelligent pour s'y retrouver tout seul -. Bon, je l'avoue c'est loin d'être l'une de mes préférées sur le papier (qui a dit que je détestais smalltalk ?), mais c'est tellement utile pour la nouveauté suivante...
    • LINQ, si il est encore besoin de le présenter, est un début de standardisation de l'accès aux sources de données et l' intégration d' un langage de requête directement dans C#... Quelques mini-exemples pour amuser les développeurs :

    var lesProduits = from produits in BaseCatalogue.Produits
    where produits.EstDispo == true
    select produits;

    La requete parle d'elle même et elle est posée la, directement dans votre code, sans concaténation qui plante toujours quand vous devez faire une modif en urgence etc.

    Mieux encore : vous pouvez utiliser LINQ pour faire une requête sur d'autres choses qu'une base de donnée ! Ainsi la requête

    var lesNouveauxItems = from rss in RssStore.UnFluxRss
    where rss.DatePublication > DateTime.Today.AddDays(-1)
    select rss;

    serait - à condition de posséder un "adaptateur de données" adéquat - une solution valide pour obtenir les billets postés depuis hier sur un site supportant RSS !

    • les méthodes d'extensions, là aussi : ajout absolument génial du framework, elles permettent "d'ajouter" des méthodes à une classe. Vous avez toujours trouvé dommage que la classe string ne propose pas une méthode Encrypt(string key) ? Eh bien, avec un peu de magie vous pouvez l'ajouter sans classe dérivée ni modification du source de String (ce qui serait d'ailleurs bien difficile).

    Voila, il y a plein d'autres nouveautés (le multi targeting - permettant de cibler une version plus ancienne du framework -, les lambas expressions, les améliorations de VSTO, le designer WPF, la mise à disposition du shell visual studio pour créer vos propres outils, Ajax intégré, etc) mais le plus simple pour vous faire une idée c'est de télécharger l'une des version express : http://www.microsoft.com/express/

  • Teambuild

    En cours de test pour un partenaire, Visual Studio Team Server a pour l'instant réussi un quasi-sans-fautes quant à la simplicité d'utilisation (mais pas d'installation), la performance, les possibilités et d'accessibilité par des bureaux déportés. Le prochain test se situe au niveau de la machine de build et, pour l'instant, c'est encore une bonne impression qui domine.

    Utilisant depuis quelques temps CruiseControl.NET, accompagné d'une tonne et demie de plug-ins fait maison, la migration vers un autre système de build ne se fera que si le jeu en vaut la chandelle. Voici déjà quelques remarques concernant TeamBuild :

    • il ne s'agit pas d'une solution d'intégration continue, c'est assez simple de le transformer pour cela (voir ce post et celui-ci) mais il ne s'agit pas de son utilisation première qui reste le build "à la demande"
    • il est basé sur MSBuild, ce qui est plutôt un bon point : les tâches créées pour l'un fonctionne pour l'autre
    • Le resultat des builds est intégré (en cas d'erreur) dans les tâches du projet, avec les logs
    • Il est (assez) facile de déplacer le build entre plusieurs machines.
    • Le reporting de TFS reprends les infos des builds

    Cela étant dit, il me manque encore un certain nombre d'outils et/ou tâches à créer (à moins que ce soit des fonctionnalités qui m'ont échapée) :

    • Une solution simple pour gérer le versionning des assemblies (la solution est un peu pénible à mettre en place : une interface graphique serait vraiment la bienvenue)
    • Un outil permettant de déclencher un build sur le même jeu de changeset qu'un autre (par exemple construire le build "Release" correspondant à un build "Debug" réalisé il y a quelques jours, avant les tests de recette)
    • Des tâches permettant un retour plus intuitif de l'information - un petit post sur un blog privé par exemple serait impeccable -, une meilleure gestion des fichiers, etc.
    • La possibilité de gérer facilement les dossiers de sortie de chacun des projets : la configuration standard copiant toutes les assemblies compilées dans un seul et unique dossier de release