Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Régler le problème de cast dans les visualiseurs de debug personnalisés sous VS 2008

L'infamant message "Unable to cast object of type votreClasseDeVisualiseur to type Microsoft.VisualStudio.DebuggerVisualizers.DialogDebuggerVisualizer" vous saute à la figure lorsque vous cliquez sur la petite loupe d'une propriété en mode debug ?

Vous êtes sous VS 2008 ? Alors il y a toutes les chances que le problème soit inversement aussi simple que le nombre d'heures que vous avez passé à chercher pourquoi sans trouver !

En effet, les premières versions de VS 2008 avait un petit problème dans le template de création des visualiseurs, et le problème arrive donc aussi avec les visualiseurs que vous avez repris de VS 2005. C'est tout bête, regardez dans les Références du projet de visualiseur, et cliquez sur Microsoft.VisualStudio.DebuggerVisualizers, et regardez les propriétés... Version est très certainement à 8.0.0.0, donc VS 2005. Il suffit de supprimer la référence puis de l'ajouter en choisissant cette fois-ci la même DLL (dans la page .NET d'ajout de référence) mais dans sa version 9.0.0.0.

C'est tout ! il n'y a plus qu'à redéployer le visualiseur dans le répertoire C:\Program Files\Microsoft Visual Studio 9.0\Common7\Packages\Debugger\Visualizers (installation par défaut en tout cas) et Hop ! Vous n'êtes même pas obligé de fermer VS 2008, normalement la nouvelle DLL sera détectée automatiquement.

 Merci qui ?  :-)

 Stay Tuned !

 

PS : pour ceux qui ne savent pas de quoi je parle, juste un mot, car c'est vraiment bête d'ignorer ça...
Les visualiseurs de debug sont des ajouts que vous pouvez "plugger" dans VS pour visualiser (en debug donc) le contenu d'une classe particulière. VS est livré avec quelques visualiseurs, c'est pour ça qu'en debug pour certaines propriétés, lorsque vous passez la souris dessus (après avoir placé un point d'arrêt généralement) vous pouvez voir une petite loupe. En cliquant dessus vous accédez à un afficheur spécialisé, plus pratique que le défilement de toutes les propriétés (comportement par défaut). De fait si vous débuggez une appli qui possèdent ses propres classes un peu complexes, il est très vite rentable d'écrire des visualiseurs qui permettent de gagner beaucoup de temps en debug... Renseignez-vous, des tutors existent sur le Web, et c'est très simple à mettre en oeuvre.

blog comments powered by Disqus