Blogs | Emplois | Labo MS | Forums dotNet | Labo .Net | FaqXP | Certifications

Bienvenue

Si vous voulez avoir des informations ou si vous voulez créer votre blog à partir de notre service, contactez nous à partir de l'adresse suivant : labo-dotnet@supinfo.com Powered By:

Syndication

Blog Stats

Labo .NET Bloggers

Latest Posts

Migration

Ce blog a été migré.

Vous pouvez désormais me retrouver aux adresses : Erebuss.com ou Erebuss.net

A très bientot

Gaëtan

envoyé le 09/11/2007 21:35 par Erebuss

Ce blog déménage

Bonjour à tous,

N'étant maintenant plus à Supinfo, je déménage mon blog.

Vous pourrez trouver mainenant de mes nouvelles sur : http://www.simonferquel.net/blog/Default.aspx. Mettez à jour vos lecteurs RSS!

envoyé le 22/07/2007 22:06 par Simon Ferquel

Install Visual Studio Script# templates in Orcas

The installation package of Script# contains both Script# librairies and compilers, and Visual Studio project and item templates. The problem is that the installer has been created to install these templates in Visual Studio 2005, so they do not appear in Orcas. But there is a workaround.

Using a fabulous little tool (Universal Extractor), you can unpack the MSI. Then, you can copy the templates to your Orcas Template repository: (in this example we use the user template repository, which is very usefull when you are not an administrator)

  • [MSI folder]\VSCSharpProjTemplateFolder\Script# -> %USERPROFILE%\Documents\Visual Studio Codename Orcas\Templates\ProjectTemplates\Visual C#\Script#
  • [MSI folder]\VSCSharpItemTemplateFolder\Script# -> %USERPROFILE%\Documents\Visual Studio Codename Orcas\Templates\ItemTemplates\Visual C#\Script#

I do not use the other templates, but you should be able to find where to put them easily if needed.

envoyé le 25/06/2007 09:43 par Simon Ferquel

Script# and ASP.NET Ajax: Support for WEB Services Video

I just made a video presenting Script# with ASP.NET AJAX and my Visual Studio Add-in for Web Service support.

You can see it here: http://blogs.labo-dotnet.com/simon/videos/DemoSSWS_fr.wmv

It is in french, and I don't know I will have time to make an english traduction... So if you are intersted in doing this, please contact me.

You can download the base solution (without Ajax), and the end solution. In both cases you will need the Northwind DataBase (SQL Server or Access version), and you will have to modify the connection string (and provider name if you use Access version) in the web.config file.

envoyé le 08/06/2007 12:50 par Simon Ferquel

Script# and ASP.NET Ajax: Support for WEB Services [updated]

As you can see with my previous article, I am a Script# enthusiast. But there are some limitations in the actual version. One of the most important examples is the lack of support for ASP.NET Ajax proxies for WEB Services.

Indeed, ASP.NET Ajax generates JavaScript proxy classes allowing browser-side code to call ASP.NET WEB Services methods marked as [ScriptService] and [ScriptMethod].

As Script# does not allow to write code calling classes and methods that it does not know, we have to build Script# assemblies that contain stubs of the proxy classes generated by ASP.NET Ajax. In order to do that, we need to look at the JS code generated by ASP.NET Ajax and rewrite the declarations in C#. It is a very time-expensive process, so I decided to create a Visual Studio plug-in that do that automatically.

It works using reflection on your WEB Application assembly, looking for [ScriptService]-marked WEB Services and [ScriptMethod]-marked methods, generating C# code and compiling it with Script#.

You can download this add-in here, and its source code here.

To use it, build your WEB Application project, right click on it in Solution Explorer and click “Generate Script# stubs for Web Services…” Chose a path to store the generated assembly, click OK, and that is done.

PS: this add-in only works with WEB Application project template (not with Web site templates).

[updated]:

I have just made a video presenting this: http://blogs.labo-dotnet.com/simon/archive/2007/06/08/17379.aspx

envoyé le 31/05/2007 11:27 par Simon Ferquel

Script# and ASP.NET AJAX article

Hi there,

I have not been posting for a long time, and sorry for every MyExposé users, I am not releasing a new version of it (as I am very busy at this moment, and I will be also the next few months).

Nikhil Kothari has recently published a new version of Script# (a tool that works like GWT that generates JavaScript client-scripts from C# code). The greatest new feature is the support of ASP.NET AJAX. So I wrote a tutorial to discover Script# by creating ASP.NET AJAX components. In this article you will create an IP v4 calculator that can compute Network IPs from an host IP and a subnet mask. All the behavior will be executed client-side and will be generated by Script# from C# code (you will enjoy IntelliSense, refactoring, class diagrams etc. in your client code).

Here is the english version (thanks to Mauricio for the help on translation): ScriptSharp and ASP.Net Ajax[en].pdf

And here is the french version: ScriptSharp et ASP.Net Ajax[fr].pdf

Update:

There was a mistake in the presentation of Script# (I wrote that Script# was inspired from GWT, and that is not true). This has been repaired.

I released a Visual Add-in allowing to use Script# to call Web Services.

envoyé le 29/05/2007 10:31 par Simon Ferquel

RE : [Misc] I've been tagged

As Patrice tagged me, it is at me now to say 5 “unknown” things about me. I think that will not be very difficult as I do not say anything about me on this tech’blog. So… let’s go!

  • First of all, I am from Orleans, a little-medium sized town 120 km south to Paris where I lived until I have been 17 (and until I have had my “baccalauréat”). I came in Paris and have been a student at Supinfo since this time (for the curious ones, I am 22 now, less than most of my current students ^^).
  • I am a musician (a fucking artist as would say my friends of Supinfo .Net Lab…), I play the guitar and the clarinet (at least, I played the clarinet, since I did not play it for about 6 months).
  • I am a “Supinfo certified trainer” since September 2005. That means that I specialized myself in Microsoft .Net technologies and WEB development, and for my two last years at school, I teach to other students stuff like C#, ASP.NET, Windows Forms, ADO.NET, Remoting and non Microsoft subjects like XHTML/CSS, JavaScript, PHP… That means too that when I am not teaching, I am training myself on recent or upcoming technologies such as .Net 3.0, C# 3, ADO.NET vNext, ASP.Net Ajax extensions (Soon on this blog, a forum engine based on ASP.NET and Ajax extensions which is my “project of the moment”. I promise something pretty cool).
  • I am in my last year at Supinfo… so I am looking for a job. I will be free from September 2007. Feel free to download source codes on this blog to have an overview of my technical skills and maybe send an email to “Simon dot ferquel [nospam] at supinfo dot com” for more details on my profile.
  • I have a big default: I am a World of Warcraft player. A few months ago, I was really addicted, I have even been a raid leader, I played every nights… This game is very cool, but also very life-intrusive… So I reduced my game-time and replaced it (in part...) with “at-home development” time. MyExposé is born during this “World of Warcraft cure”!

So I have to tag other blogs to propagate the chain… The winners are: Yann Lautrédou (my team manager), Thomas Lebrun (another SCT actually in internship at Microsoft France), and Mitsuru Furuta (Microsoft France evangelist, C# addicted and leader of the MathFX project).

envoyé le 27/02/2007 11:54 par Simon Ferquel

My way to VISTA RTM

Hi everyone.

I received many encouragements for my work on MyExposé, and I thank you very much for all of that.

As you can see, MyExposé has not been updated since Windows VISTA RTM is out for enterprises. There are multiple reasons for that, much work at Supinfo, many other projects (you will see some of these in the upcoming weeks / months on this blog), but the main reason is that I had no Windows VISTA license (except a Business N version from my school that I am boycotting) to continue developping MyExposé on RTM.

I installed Vista Ultimate two days ago on my laptop. So development will restart very soon. In a couple of weeks, I will release a new version with several improvements :

  • Code robustness
  • Improved security (currently, plugins are loaded in the same AppDomain as the core of MyExposé, with privileges of the current user... Evil developpers can easily write keylogger plugins for MyExposé, that will not be possible anymore in next version).
  • Improved performances
  • Bug fixes with the taskbar mini-app
  • Improved performances on multi-core platforms
  • Settings to enable / disable background transparency
  • Settings to set transparency of the thumbnails
  • Improved installer

Lastly, I am looking for a developper who have a Windows Vista 64 bits capable computer to maintain my code for this platform (or a hardware manufacturer to "lend" me such a computer ^^).

Contact me at : simon dot ferquel [nospam] at supinfo dot com

envoyé le 13/02/2007 09:58 par Simon Ferquel

Expression Blend: My first impressions

As I have used Expression Interactive Designer a lot in precedent projects, I was curious about new stuff in Expression Blend (the final name of Interactive Designer, aka Sparkle Designer).

So there are some very good stuff… and some not so good at all !

I will summarize my impressions with a good / bad list by theme.

Layout

Good

  • The new toolbar (but not its placement, at the left of the screen)
  • Grouping of the toolboxes by themes (Interaction, Project, Properties, Resources, Results)

Bad

  • Lack of interface customizations (we cannot dock the toolboxes where we want)
  • Timeline placement: It is in a vertical toolbox, and fit in the half of the toolbox width!!!
  • No "auto-hide" functionality for the toolboxes (like Visual Studio toolboxes)

Features

Good

  • Event triggers and property triggers support (the best new feature of this version)
  • Style / template editor (much better)
  • Asset library
  • Syntax highlighting of Xaml code...

Bad

  • ... but no IntelliSense!
  • Lack of style editing / affectation options using controls contextual menus (whereas templates are present). Workaround:  Menu bar -> Object -> Edit Style
  • Integration with Visual Studio: No intellisense because the project is not loaded when you double-click on a .cs file

General design

Good

  • Hmm Hmm...
  • Icons of toolbar buttons and controls are not so bad...

Bad (here is the dark side of Expression Blend ^^)

  • Layout problems (see the layout part of this post)
  • The Dark theme (default theme of Blend) is awful: it is dark, not user friendly, unreadable, and it does not respect color preferences of the user (and it does not integrate well in the user environment, definitely)
  • It is even worst for short sighted people (low contrast, text written in gray over dark gray, default police size...)
  • Menus design make me think of old dos text editors (squared, gray... ugly)
  • The worst is for disabled elements (disabled menu items, for example, are printed in dark gray over darker gray)
  • Light theme is even worst (uglier, really awful)

envoyé le 05/12/2006 17:22 par Simon Ferquel

My Exposé : new CTP today :p

Today is a release date for My Exposé.

Many improvements in this version:

  • More natural thumbnails placement (no more grid)
  • Tray icon with configuration dialog
  • No more configuration file in ProgramFiles folder
  • New object model for triggers (better resource freeing, new trigger methods, informations about the state of "MyExpose"...)
  • Support for non-96 dpi screen settings
  • Support of Windows Speech Recognition (open the configuration dialog, add a trigger, choose VoiceTrigger and configure it)
  • Beautyful icons from Mauricio Diaz (thanks a lot Mauricio ^^)
  • ...

You can download binaries or source code.

[Update]

If you have problems running MyExposé, try to install the following package :
http://www.microsoft.com/downloads/details.aspx?familyid=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=en

If you have have already installed an old version of My Exposé, please uninstall it before trying to install this version.

For developers who are interested in developping their own triggers, see the code of the VoiceTrigger project.

kick it on DotNetKicks.com Digg!

envoyé le 08/11/2006 16:12 par Simon Ferquel

My Exposé : A Mac OS X Exposé implementation for Windows VISTA [Update]

A new version is available here:

http://blogs.labo-dotnet.com/simon/archive/2006/11/08/11485.aspx

 

 

Here is the original message:

Even if it was written in French, my last post seems to have been read by many people from all around the world. Thanks a lot to all my refferrers. So I am pleased to annouce a new version of MyExposé (sorry it is not yet on Codeplex...), and this time, in english !

What's new in this version ?

  • More robust code: Detection of resolution changes, desktop composition disabling...
  • "Sensitive screen corners": Exposé can be triggered by the mouse
  • Configuration file: Possibility to change settings like trigger keys/corners without restarting MyExposé
  • Extensibility: Third party developpers can develop their own triggers
  • Incomplete support of multi-screen configurations: Multi-screen configurations may encounter some visual bugs but should work as expected.
  • Performance: Better performances on multicore configurations (thanks to OpenMP)

You can download either Source code (you should have to configure projects to target your windows SDK folder) or binaries.

 

envoyé le 06/10/2006 13:58 par Simon Ferquel

[Copycat] Expose sous Windows Vista RC1 [update]

Update: new version here.

Le week end dernier, j'ai eu une idée lumineuse... J'ai réfléchi à ce qu'apportait Mac OS X en terme d'expérience utilisateur et qui n'éxistait pas sur Windows Vista. La première idée qui m'est venue est "Exposé".

Bref rappel sur cette feature à la fois toute bète et super bien pensée :

En tant que développeur (et aussi en tant que Geek d'ailleurs), il m'arrive souvent d'avoir beaucoup (énormément) de fenêtres ouvertes. Pour m'y retrouver, c'est bien souvent la galère, et je perds beaucoup (énormément) de temps à essayer de trouver LA fenêtre dont j'ai besoin (cela se termine bien souvent par l'ouverture d'une nouvelle fenêtre au bout de 30 secondes de recherche ^^). Exposé permet par la pression d'une simple touche du clavier (F9 sur Mac) de voir l'intégralité des fenêtres sous forme de miniatures dispersées sur tout l'écran, ce qui permet de localiser immédiatement la fenêtre qui nous intéresse et la faire passer en premier plan.

Bien sûr Windows Vista possède quelques fonctionnalités similaires, mais dont l'ergonomie n'est pas aussi efficace (Flip3D ne permet pas de visualiser toutes les fenetres en même temps, et en plus elles sont de travers :p, et le nouveau alt+tab affiche des miniatures trop petites).

Et bien ma chère Martine, votre serviteur vous apporte l'ébauche d'un remède à cet abominable manquement. Ca se trouve ici, c'est absoluement pas supporté, ca tourne sous Windows Vista RC1, il n'y a aucune gestion d'erreurs/exceptions, ca ne fonctionne que si Aero est activé et c'est codé en C++ mixte (CLI + code natif pour limiter le nombre de P/Invoke). Ce sera bientôt sur Codeplex, et vous pouvez bien sûr faire n'importe quoi avec les sources...

(Cliquez sur l'image pour télécharger les sources / éxécutables)

Au fait, je n'ai pas tout à fait copié Apple : F9 c'était trop chiant comme trigger pour le debugage (ca avait tendance à me rajouter des breakpoints ^^), alors j'ai choisi F12 :).

envoyé le 12/09/2006 19:20 par Simon Ferquel

[WinFX] Flickr Powered by WPF

Bonjour à tous.

J'ai profité de la réinstallation de ma machine pour installer la CTP de juillet de WinFX du Framework .Net 3.0, les outils de la gamme Expression et tout le tintouin, afin de jouer un peu avec WPF et WCF.

Voilà donc un petit programme permettant d'intéroger la base de donnée d'images Flickr dans une interface créée grâce à Windows Presentation Foundation.

Bien sûr, pour pouvoir lancer la version compilée, il vous faudra le Framework .Net 3.0 Runtime July 2006 CTP.

Pour les aventuriers qui voudraient explorer et compiler le code source, il faudra également le Windows SDK July 2006 CTP.

A noter que le développement de cette application a été l'occasion de la découverte d'un bug intéressant (mais qui pour l'instant n'a pas l'air d'intéresser les principaux intéressés...).

Un grand merci à Mauricio Diaz Orlich qui a fait les visuels (logo du labo, icône du bouton Full Screen et dessin de base de l'écran de chargement) sous Expression Graphic Designer.

A savoir que cette application qui n'a l'air de rien, aborde une bonne partie des nouveautés de WPF (Multithreading, animations, templates, styles, triggers, binding, DependencyObjects/DependencyProperties, ressources...).

Pour finir un petit screenshot :)

PS : après avoir sélectionné une photo dans la liste des résultats, vous pouvez cliquer sur l'image pour accéder à la page flickr correspondant à la photo (pour laisser un commentaire ou autre), ou cliquer sur le bouton "Full Screen" pour avoir droit à une jolie animation (qui rame un peu, d'accord, mais jolie quand meme :p)

envoyé le 23/08/2006 16:52 par Simon Ferquel

Article de Thomas Lebrun sur C# 3 et précisions sur les expressions

Thomas Lebrun vient de publier un article très intéressant sur les nouveautés de C# 3. Il couvre à peu prêt tout ce que l’on sait (et que l’on peut tester) pour l’instant sur la nouvelle version du langage ainsi que des technologies qui lui sont associées.

Seulement en parcourant l’article j’ai un peu buté sur un paragraphe à propos des expressions Lambda. En effet, d’après certaines tournures de phrase, on pourrait croire que les expressions Lambda ne sont que des méthodes anonymes dont on aurait raccourci la syntaxe… Ce qui est vrai dans certains cas (pour Linq for Objects par exemple), mais qui est loin d’être une généralité.

En effet le principal apport des expressions Lambda est justement la notion d’"expression". Une expression diffère d’une instruction par le fait qu’elle peut être évaluée et interprétée par le code. On parle alors d’évaluation d’arbre d’expressions.

Une expression Lambda sera donc suivant les cas compilée en tant que méthode anonyme (quand la méthode dans laquelle elle est utilisée attend un délégué), ou comme une "expression" lorsque la méthode attend une expression.

Pour illustrer ceci, voici un petit exemple de code :

DataContext1 dc = new DataContext1();
var allresults = from p in dc.MyPersistentTypes
select p;

Console.WriteLine("Copy all entities from database to a list");
 
List<MyPersistentType> allEntitiesInAList = new List<MyPersistentType>(allresults);

Console.WriteLine("Query from table :");

var queryFromTable = from p in dc.MyPersistentTypes
                     where p.Id > 2
                     select p;
 
 
Console.WriteLine("Query from a list :");
var queryFromList = from p in allEntitiesInAList
                    where p.Id > 2
                    select p;

A noter ici que j’utilise la syntaxe Linq plutôt qu’une expression Lambda, ce qui revient exactement au même.

Voyons maintenant le résultat de la décompilation du code généré grâce à l’outil Reflector :


DataContext1 context1 = new DataContext1();
Table<MyPersistentType> table1 = context1.MyPersistentTypes;
 
Console.WriteLine("Copy all entities from database to a list");
 
List<MyPersistentType> list1 = new List<MyPersistentType>(table1);
 
Console.WriteLine("Query from table :");
 
ParameterExpression expression1 = Expression.Parameter(typeof(MyPersistentType), "p");
IQueryable<MyPersistentType> queryable1 = 
     Queryable.Where<MyPersistentType>(context1.MyPersistentTypes,
           Expression.Lambda<Func<MyPersistentType,bool>>(
                Expression.GT(Expression.Property(expression1,
                      (MethodInfo) methodof(MyPersistentType.get_Id)),
                       Expression.Constant(2, typeof(int))),
                new ParameterExpression[] { expression1 }));
 
Console.WriteLine("Query from a list :");

if (Program.<>9__CachedAnonymousMethodDelegate5 == null)
{
   Program.<>9__CachedAnonymousMethodDelegate5 = new Func<MyPersistentType, bool>(Program.

b__3);
}
IEnumerable
<MyPersistentType> enumerable1 = Sequence.Where<MyPersistentType>(list1, Program.<>9__CachedAnonymousMethodDelegate5);

On voit bien ici que la même expression lambda est compilée de façon différente selon le cas dans lequel elle est utilisée. Pour le type Table, on a droit à quelque chose relativement compliqué en apparence (il s’agit en fait d’un arbre d’expression), alors que pour le type List, on utilise un délégué généré (de la même facon qu’une méthode anonyme).

En fait, le compilateur a détecté que le type Table implémente IQueryable (et plus précisément IQueryable<MyPersistantType>), et a donc décidé de créer un arbre d’expressions qui sera évalué par le provider utilisé (définit au niveau du DataContext dans notre cas), afin d’obtenir le résultat escompté (dans notre cas, ceci éxécutera une requete SQL du genre « SELECT * from MyTable where ID > 2 » et nous la renverra sous la forme d’une énumération de MyPersistentType). A noté que l’arbre d’expression n’est pas évalué dans notre cas, car nous n’avons pas utilisé le résultat de la requête dans notre code. En effet, l’éxécution de la requête ne se fait qu’au moment où queryFromTable est utilisé.

Je ne détaillerai pas l’arbre d’expression généré ici, dans les grande lignes, on peut voir que l’on passe à la méthode Where une lambda expression (Expression.Lambda), constituée d’une comparaison "Greater than" (Expression.GT) s’éxercant sur une propriété d’un parametre de l’expression (Expression.Property) et une constante (Expression.Constant).

envoyé le 08/08/2006 12:51 par Simon Ferquel

Encore un petit peu de Javascript...

Suite à mon dernier post, voici une application de mon "moteur d'animation" : un moteur de Drag and Drop animé (c'est à dire que les éléments déplacables ne se téléportent pas, mais glissent élégament vers leur nouvelle position). Vous pouvez en voir un aperçu ici, et télécharger les sources par là. Tout commentaire est le bienvenu :).

Sinon, si quelqu'un sait comment éviter les sélections de texte intempestives lors du déplacement de mes parts, ca me serait bien utile...

envoyé le 29/06/2006 14:13 par Simon Ferquel

Un petit peu de Javascript

Pendant que mes élèves sont en TP noté, j'occupe mon temps en faisant un peu de Javascript. Je suis en train de développer un moteur d'animation (permettant d'animer un peu tout et n'importe quoi et surtout des attributs css). C'est en Javascript, c'est orienté objet, il y'a même un peu d'héritage... Bref, tout retour est le bienvenu ! http://blogs.labo-dotnet.com/simon/developments/JSAnimationEngine.zip

envoyé le 19/06/2006 09:44 par Simon Ferquel

Outlook 2007 & fichier de données

Depuis le début de l'année j'utilise un fichier de données (pst) situé sur un disque dur USB afin de pouvoir l'utiliser sur mon PC portable ou sur mon fixe simplement en branchant mon disque dur et sans devoir faire de synchronisation quelconque.

Jusque là pas de soucis. Et puis hier, j'installe la beta 2 d'Office 2007 et là... c'est le drame :

Partit en quête d'une réponse à mon problème, ni google ni même le site de Microsoft ne vinrent à mon secours

Après plusieurs heures de tests divers il semble qu'Outlook n'aime tout simplement pas les fichiers de données sur disque dur USB !

En effet si le fichier de données se trouve sur le disque dur interne, pas de soucis !

Certains me disent qu'Outlook détecte le disque dur comme étant USB et m'interdit de l'utiliser. Dans ce cas, pourquoi pouvais-je le faire sous 2003 ?

Bug ou "normal", j'attends de voir la version finale en espérant que cela résoudra mon problème :/

envoyé le 13/06/2006 10:56 par Pierre-Gildas

Reflection : Aider la CLR à charger des assemblies

Lors de la création d'un outil de Benchmark pour un projet en cours, je me suis retrouvé devant un sérieux problème au sujet du chargement dynamique d'assemblies.

En effet, le fait de charger une Assembly via System.Reflection.Assembly.LoadFile("myAssembly.dll"); permet de manipuler les types de cette assemblies, mais ne la charge pas dans l'AppDomain de façon à ce qu'elle soit utilisable par d'autres assemblies chargées dynamiquement.

Voici un petit code d'exemple (qui ne fonctionne donc que lorsque la méthode à tester n'utilise pas de types déclarés dans des assemblies référencées) :

using System;

using System.Collections.Generic;

using System.Text;

using System.Reflection;

 

namespace Tester

{

    class Program

    {

        static void Main(string[] args)

        {

            if(args.Length != 3)

            {

                Console.WriteLine("Usage : \nTester \"Assembly path\" ClassName MethodName");

                return;

            }

            // Retrieve the absolute path of the assembly

            string absolutePath = System.IO.Path.GetFullPath(args[0]);

 

            // Load the assembly using Reflection API

            Assembly assToTest = Assembly.LoadFile(absolutePath);

 

            // Load the type and create an instance of the type to test

            Type typeToTest= assToTest.GetType(args[1]);

            object objToTest = typeToTest.GetConstructor(new Type[]{}).Invoke(null);

 

            // Call the method to test using reflection

            typeToTest.GetMethod(args[2]).Invoke(objToTest,null);

 

        }

    }

} 

Si nous le lançons sur une méthode utilisant des types définis dans des assemblies externes, nous recevons une exception de de ce style :

Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Could not load file or assembly 'ReferencedAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified. File name: 'ReferencedAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
   at AssemblyToTest.ClassToTest.MethodToTest()

Il existe cependant une méthode permettant d'aider la CLR à localiser les assemblies référencées, mais non chargées dans l'AppDomain. En effet la classe AppDomain possède un évènement AssemblyResolve appelée à chaque fois que la CLR n'arrive pas à résoudre elle même le nom d'une Assembly. Voici comment l'on pourrait améliorer notre petit programme afin qu'il charge automatiquement les assemblies qui se trouvent dans le répertoire de l'assembly testée :

using System;

using System.Collections.Generic;

using System.Text;

using System.Reflection;

using System.IO;

 

namespace Tester

{

    class Program

    {

        static void Main(string[] args)

        {

            if(args.Length != 3)

            {

                Console.WriteLine("Usage : \nTester \"Assembly path\" ClassName MethodName");

                return;

            }

            // Retrieve the absolute path of the assembly

            string absolutePath = System.IO.Path.GetFullPath(args[0]);

 

            // Load the assembly using Reflection API

            Assembly assToTest = Assembly.LoadFile(absolutePath);

            string directoryPath = System.IO.Path.GetDirectoryName(absolutePath);

            AppDomain.CurrentDomain.AssemblyResolve+=delegate(object sender,ResolveEventArgs arg)

            {

                string assemblySimpleName =arg.Name.Substring(0,arg.Name.IndexOf(','));

                string path;

                if(File.Exists((path = Path.Combine(directoryPath, assemblySimpleName+".dll"))))

                {

                    return Assembly.LoadFile(path);

                }

                else if(File.Exists((path = Path.Combine(directoryPath, assemblySimpleName+".exe"))))

                {

                    return Assembly.LoadFile(path);

                }

                else

                {

                    throw new InvalidOperationException(string.Format("The referenced assembly \"{0}\" is not in the same directory as the tested assembly",arg.Name));

                }

            };

            // Load the type and create an instance of the type to test

            Type typeToTest= assToTest.GetType(args[1]);

            object objToTest = typeToTest.GetConstructor(new Type[]{}).Invoke(null);

 

            // Call the method to test using reflection

            typeToTest.GetMethod(args[2]).Invoke(objToTest,null); 

        }       

    }

} 

 

envoyé le 01/06/2006 15:47 par Simon Ferquel

[Sharepoint] Le keynote de la Sharepoint Conference 2006 présenté par Bill Gates est dispo online

Tout est dans le titre, le webcast du keynote de la Sharepoint Conference 2006 est disponible à cette adresse :

http://www.microsoft.com/winme/0605/27595/BillG_MBR.asx

 

envoyé le 18/05/2006 11:46 par Patrice Lamarche

Suivez la Sharepoint Conference 2006 jour après jour

 
Renaud Comte expert connu et reconnu sur les produits Sharepoint de Microsoft (WSS et SPS) et nommé MVP par Microsoft depuis plusieurs années, vous propose de suivre l'actualité de Sharepoint et plus particulièrement Sharepoint 2007 inclus dans la prochaine version de la gamme Office System grâce à son blog.
Il poste ainsi différentes informations importantes à propos de Sharepoint 2007, et nous permet ainsi de suivre à distance la Sharepoint Conference 2006 qui a lieu en ce moment aux Etats-Unis.
En savoir plus :
http://blogs.developpeur.org/themit/archive/category/1179.aspx
Flux RSS : http://blogs.developpeur.org/themit/rss.aspx?CategoryID=1179

envoyé le 17/05/2006 08:40 par Patrice Lamarche

[Misc] Outlook et les fuseaux horaires (Suite)

Dans la suite des nouvelles  fonctionnalités d'Office 2007 bien pratiques, j'ai eu le plaisir de découvrir que les fuseaux horaires sont enfin (rééllement) supportés grâce à Outlook 2007 ! :) (lire mon précédent post à ce sujet).

Source : http://diazorm.e-supinfo.net/blog/?p=133

envoyé le 15/05/2006 11:26 par Patrice Lamarche

OpenXMLDeveloper.org : Créer, lire, manipuler les différents formats XML de la gamme Office

Une des nouveautés les plus intéressantes introduite avec Microsoft Office 2003 est le support d'XML, via XML, XSL, et XSD et la création de formats XML propres à la plupart des outils de la gamme Office : Word, Excel, Visio, Powerpoint avec respectivement le WordML, le SpreadSheetML, le DataDiagrammingML. (sans oublier la création d'InfoPath, un éditeur XML permettant de créer et remplir des formulaires électroniques basés sur des schémas XSD).

Cette introduction du format XML permet de créer des documents non plus sous forme binaire comme on le faisait jusqu'alors mais sous forme XML, et donc permet de créer de manière plus simple n'importe quel type de document  à partir de n'importe quelle technologie/langage etc.

Le géant de Redmond confirme et poursuit son effort d'adoption d'XML avec Office 2007 et également avec WinFX qui propose une API de manipulation des documents Office.

Si vous souhaitez avoir des infos sur ces formats de fichiers et découvrir comment créer des applications capable de générer des documents Word, Excel, Powerpoint au format XML, un site a été créé par Microsoft qui est disponible depuis la fin Mars  : http://www.OpenXMLDeveloper.org

envoyé le 06/05/2006 00:15 par Patrice Lamarche

Envie d'en savoir plus sur le support des CSS de Internet Explorer 7 ?

Le support des CSS est un des points les souvent évoqués dans les critiques rencontrées par Internet Explorer. Channel 9 vient de publier une interview de Markus Mielke PM dans l'équipe d'IE 7 (la prochaine version d'IE pour le moment encore en béta) où celui-ci revient sur les problèmes présents dans les versions actuelles d'Internet Explorer et présente les nouveautés apportées par IE 7 quand au support de ce standard.

En savoir plus :
http://channel9.msdn.com/showpost.aspx?postid=188986

envoyé le 04/05/2006 22:39 par Patrice Lamarche

Les sessions du Mix'06 de Las Vegas disponibles en téléchargement

Les sessions de la conférence Mix'06 qui s'est déroulé à Las Vegas il y a un peu plus d'un mois sont disponibles en consultation et téléchargement, et tout ceci gratuitement ! Une bonne occasion de découvrir Atlas, WPF, etc.

Pour consulter et/ou télécharger les sessions :
http://sessions.mix06.com/

Source : Blog de Christophe Lauer

envoyé le 04/05/2006 11:57 par Patrice Lamarche

Le futur des compilateurs avec le projet Phoenix

Je vous avez déjà parlé du projet Phoenix (allez faire un tour sur le site il a été mis à jour il y a quelques mois et il est bien mieux qu'avant) développé par Microsoft research, projet qui avait été présenté par John Lefor lors des journées MSR 2005. Ce projet est un framework de compilation destiné à faciliter la création de compilateurs en proposant des services prêts à l'emploi que cela soit au niveau du parsing du code ou d'algorythmes d'optimisation (cela permettra entre autres de réduire l'écart qu'il y a entre le compilateur C++ et le compilateur C# de Microsoft (ce dernier ayant 20 ans de retard par rapport au premier, oui je suis méchant et j'exagère :).

Channel 9 vient de publier une vidéo avec Jim Hogg Program Manager de Phoenix qui vous permettra de découvrir ce framework qui servira probablement de base aux compilateurs de Microsoft dans un avenir plus ou moins proche.

En savoir plus :
http://channel9.msdn.com/showpost.aspx?postid=188589

envoyé le 03/05/2006 07:55 par Patrice Lamarche

[TFS] Beaucoup de ressources sur Team System

Microsoft a mis à jour l'espace MSDN consacré à Team System, et le résultat est très sympathique ! Beaucoup de vidéos, de webcasts sont là pour vous expliquer comment réaliser toutes les tâches courantes avec TFS. Ces vidéos classées selon votre niveau de connaissance (Intermediate, Advanced, Expert) sont un excellent moyen de vous former ou vous perfectionner sur cette plate-forme.

Plus d'infos :
http://msdn.microsoft.com/vstudio/teamsystem/expand/

envoyé le 02/05/2006 12:18 par Patrice Lamarche

WPF et ASP.net 2 sous les palmiers

Je reviens de l'ile de la Réunion où j'ai donné une formation et j'en ai profité pour passer un peu de temps à SUPINFO Océan Indien où j'ai présenté ASP.net 2 et WPF grâce à deux sessions d'1H30 chacune.

J'ai commencé un premier soir par la présentation de Windows Presentation Foundation, la couche présentation de WinFX. Après avoir présenté WinFX, le workflow Graphiste => Designer =>Développeur grâce aux outils de la gamme Expression et à Visual Studio, ainsi que les nouveautés apportées par WPF (support du vectoriel, de la 3D, le langage de sérialisation XAML, etc.), j'ai été étonné de la réaction des étudiants présents. Après les différentes démos présentées, ceux-ci étaient certes conquis par la technologie mais ils étaient surtout inquiets et se demandaient quelle allait être la place du développeur dans le futur étant donné les avancées que les différents éditeurs du monde logiciel nous proposent.

Bien évidemment, à l'heure actuelle le travail d'un développeur ne se résume pas à créer la couche présentation mais leur inquiètude peut être compréhensible. La montée en puissance de la programmation déclarative(facile à générer/outiller et même à écrire manuellement), l'abstraction proposée par les outils de développements, les assistants/wizards des IDE, la génération de code (via des outils de générations tels que CodeSmith ou Olymars, et via des outils de modélisation UML, ou via des DSL), réduisent et vont réduire très fortement le nombre de lignes de code à écrire manuellement.

Après tout, il est déjà possible de créer des applications complètes et fonctionnelles (Forums, gestion de membres, etc.) en ASP.net 2 sans écrire une seule ligne de code. Utilisation des providers, utilisation des fonctionnalités techniques (sécurité, framework de pages, etc.) fournies par ASP.net 2, utilisation du SqlDataSource, rendent possible la création d'applications sans écrire une seule ligne de code, le seul code utilisé étant du code déclaratif généré par l'IDE.

Bien évidemment, une application codée de la sorte serait moins maintenable qu'une application correctement architecturée (au niveau de l'accès aux données), et il serait préférable de créer une réélle couche d'accès aux données, une éventuelle couche service, et des DTOs bindés avec des ObjectDataSource. Néammoins, le résultat est fonctionnel et n'importe quel développeur voire utilisateur avancé peut parvenir à créer un site web sans  trop de problèmes. De plus, les designers, principaux bénéficiaires des avancées apportées par WPF, connaissent déjà le développement notemment ceux travaillant avec Flash et son langage de script ActionScript.

Bref tout ceci peut effrayer, mais la main humaine sera à mon avis toujours requise, la logique métier, la développement de fonctionnalités spécifiques, l'optimisation, le multithreading (qui prend énormément d'importance avec l'apparition des micro-processeurs multi-coeurs) sont des exemples qui sont là pour le prouver et c'est donc ce que j'ai essayé d'expliquer très rapidement dans le temps qui m'était imparti.

Concernant ma session sur ASP.net 2, je n'ai eu que des bons retours malgré une démo ratée suite à l'installation récente d'un VS.net 2003 qui a apparemment pas totalement plu à VS 2005.

2006_0427Réunion0009

 

2006_0427Réunion0008

envoyé le 30/04/2006 20:53 par Patrice Lamarche

[WPF] Débuter avec Windows Presentation Foundation

Si vous souhaitez tester vous-même la couche présentation de WinFX, et ainsi exécuter les quelques démos disponibles sur le web ou alors même écrire vous même quelques lignes de code XAML, voici une liste de liens qui devrait vous aider.

Afin de vous motiver avant passer à l'action quelques vidéos de démos d'applications utilisant WPF :
La démo NorthFace
WinFX Hearths (Jeu de cartes)
La démo HealthCare

Remarque importante avant de commencer à installer quelque chose : toutes les versions disponibles sont des versions provisoires en cours de développement destinés à permettre aux développeurs de tester ces nouvelles technologies. Ainsi, les produits peuvent être buggés et il est déconseillé de les installer sur une machine de travail. Il est donc recommandé d'utiliser une machine virtuelle grâce à VPC ou VMWare ou alors de créer une deuxième partition bootable afin de profiter de toute la puissance de votre machine et de votre carte graphique.

Pour installer tout le nécessaire, il faut installer l'ensemble de ces composants dans le bon ordre si possible (l'installation de WinFX après Visual Studio ne pose cependant aucun problème).

Microsoft Pre-Release Software WinFX Runtime Components - February Community Technology Preview (CTP)  : Le framework WinFX indispensable à l'exécution des applications se basant sur ce framework.

Visual Studio Express : Si vous n'avez pas Visual Studio 2005 (ou si vous souhaitez economiser de l'espace en évitant d'installer le mastondonte :), vous pouvez utiliser les éditions gratuites de Visual Studio : Visual C# Express ou Visual Basic.net Express.

Microsoft® Windows® Software Development Kit (SDK) for the February 2006 Community Technology Preview (CTP) for Windows Vista and WinFX Runtime Components : Le SDK qui permet de créer des applications basées sur le framework WinFX et donc pouvant utiliser WPF. Contient des exemples très interessants pour débuter.

Microsoft Visual Studio Code Name “Orcas” Community Technology Preview - Development Tools for WinFX® : Les extensions de Visual Studio qui vous permettront de créer des projets WinFX et d'utiliser un designer de formulaires qui a le mérite d'exister même s'il encore peu fonctionnel...

Si vous avez  des problèmes d'installation :
http://blogs.msdn.com/tims/archive/2006/03/13/550600.aspx
http://msdn.microsoft.com/windowsvista/support/relnotes/winfxfebctp/default.aspx

Si vous souhaitez tester la gamme expression qui propose notamment Graphic Designer ainsi que Interactive Designer destinés respectivement aux graphistes et aux designers. :
Graphic Designer
Interactive Designer et des vidéos d'entrainement afin de découvrir l'outil

Vous pouvez également essayer Zam3D de Electronic Rain qui va plus loin que Interactive Designer pour ce qui a attrait à la 3D.

envoyé le 27/04/2006 07:17 par Patrice Lamarche

[Astuce] Où trouve-t-on la base Northwind dans SQL Server 2005 Express ?

La base de données exemple Northwind que l'on retrouvait dans SQL Server 2000 n'est plus présente dans SQL Server 2005. Première solution pour l'installer, récupérer le script SQL (voir premier lien) de création de cette base et l'exécuter dans SQL Server 2005.

Autre solution, ne plus utiliser Northwind mais la base AdventureWorks qui est la base de données exemple de SQL Server 2005 qui n'est malheureusement pas installée par défaut.

Northwind and Pubs Databases (SQL Server 2000)
http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46A0-8DA2-EEBC53A68034&displaylang=en

Samples SQL Server 2005 (base AdventureWorks entre autres)
http://www.microsoft.com/downloads/details.aspx?FamilyID=e719ecf7-9f46-4312-af89-6ad8702e4e6e&DisplayLang=en

Diagramme de la base AdventureWorks
http://www.microsoft.com/downloads/details.aspx?familyid=0f6e0bcf-a1b5-4760-8d79-67970f93d5ff&displaylang=en

envoyé le 26/04/2006 13:01 par Patrice Lamarche

[Coup de gueule] Microsoft et ses CTP...

Grrr... Pourquoi Microsoft retire-t-il ses précédentes CTP du site de téléchargement de MSDN ???

Il est à présent impossible de télécharger le SDK de la CTP de WinFX du mois de Décembre ou de Janvier, seule celle de février est disponible... (Pour tester...)Je n'aurais qu'un seul mot : POURQUOI ???

Pour tout ceux qui installent chaque version afin de tester les nouveautés et être up-to-date afin d'apprendre pour soi-même et eventuellement d'effectuer des présentations de ces technologies, il n'y a qu'une seule solution : Avoir un disque dur d'1 To afin d'être capable de stocker différentes machines virtuelles avec chaque CTP.

Vous allez me dire, pourquoi vouloir la version de Janvier alors qu'une nouvelle version est disponible ? C'est très simple, j'effectue occassionnellement des présentations de WPF, et n'ayant pas énormément de temps, je mets à jour mes slides, et récupère les démonstrations que j'ai eu l'occasion de faire lors de mes précédentes présentations.
Ayant à faire une présentation ce soir, je viens donc de formatter une de mes partitions afin de réinstaller la CTP de Janvier afin d'effectuer mes démonstrations qui sont donc prêtes, et là... arrggh... Plus de SDK, seul le framework est disponible ainsi que les extensions de VS... :(

envoyé le 26/04/2006 09:42 par Patrice Lamarche

Google Summer of Code 2006

Comme l'année dernière, Google organise un concours de développement à destination des étudiants. Le principe est simple : inciter les étudiants à participer à des projets open-source et rénumérer ceux-ci s'ils ont réussi à terminer leur projet avant la fin de l'été. Cette année, il y a beaucoup plus d'entreprises qui participent au concours ce qui laissent penser que la sélection sera plus large cette année, qu'il y aura plus de projets et donc d'étudiants sélectionnés.

Le dépôt des candidatures débute le 1er Mai.

En savoir plus :
le Flyer
http://code.google.com/soc/SoC2006Flyer.pdf
Le site officiel http://code.google.com/soc/

envoyé le 25/04/2006 13:04 par Patrice Lamarche

[Misc] 15 000 km en 1 week-end : Qui dit mieux ?

Tout est dans le titre, je continue mon périple et j'ai donc effectué plus de 15000 km en un week-end, c'est à dire une 20aine d'heures de vol, puisque je suis revenu de Chine ce week-end où j'ai passé 2 semaines à enseigner le développement web et le développement .net à des étudiants Chinois.


Je suis ensuite reparti à l'aéroport CDG 2 dès le lendemain afin de donner une formation dans une CCI de l'Ile de la Réunion :)


envoyé le 21/04/2006 14:27 par Patrice Lamarche

[News] Visual Studio Express Gratuit

Comme vous le savez probablement déjà, Microsoft a annoncé hier que la gamme Express de Visual Studio était à présent définitement gratuite. De nombreux blogs en ont fait l'écho mais je n'ai pas réussi à trouver facilement l'ensemble des produits de la gamme express en français.

Je vous mets donc ci-dessous la liste des produits Express en français téléchargeable gratuitement, en version bootstrapper ET en version ISO, trouvée sur le blog de Pascal Belaud

1- Pour télécharger les bootstrappers seulement (ceux-ci vont ensuite, une fois exécutés, lancer le téléchargement complet pour une installation dans la foulée) :

2- Pour télécharger les images ISOs (et se graver un CD par exemple) :

envoyé le 21/04/2006 08:19 par Patrice Lamarche

Changement d'adresse

Mon blog a desormais changer d'adresse :

http://www.gregoryghez.com/

A bientot !

envoyé le 18/04/2006 15:13 par Grégory Ghez

[ASP.net] A propos de l'Atlas Control Toolkit

Scott Guthrie vient de poster des informations des plus interessantes à propos de l'Atlas Control Toolkit dont la première version a été publiée hier :

  • Première info : L'Atlas Control Toolkit devrait contenir d'ici quelques mois entre 50 et 100 contrôles prêts à l'emploi, destinés à faciliter la mise en place de scénarios de navigation les plus courants
  • 2ème info importante : L'Atlas Control Toolkit sera ouvert aux contributions de la communauté Atlas. Concrètement cela veut dire que non seulement les sources sont disponibles, mais les plus motivés pourront y placer leurs contrôles de leur création, ou alors submitter des correctifs, etc.

En savoir plus :
http://weblogs.asp.net/scottgu/archive/2006/04/13/442793.aspx

envoyé le 14/04/2006 04:56 par Patrice Lamarche