Utilisation des sources du framework .net - Configuration de Visual Studio et quelques astuces
Depuis janvier 2008, Microsoft fournis les sources du framework, cela peut être utile pour faire du pas à pas directement depuis le framework. Cette fonctionnalité est directement intégré dans Visual Studio, c'est donc très accès debugging. Pour la consultation de source, je préfère encore reflector, qui me permet en un click d'aller directement dans la méthode etc ...
Voici, en image, comment utiliser cette fonctionnalité. J'utilise Visual Studio 2008 SP1.
Lorsque vous debugger, par défaut vous avez ca :

La première étape pour voir les sources du framework et d'afficher le code externe dans le "Call Stack"
Puis vous devez charger les symboles (pdb) depuis les serveurs de Microsoft. Un pdb est un fichier contenant des métadonnées sur une assembly, cela permet à Visual Studio d'afficher la bonne ligne de code suivant où se trouve votre programme : en savoir plus sur les pdb (MSDN)

La première fois, Visual Studio vous indique qu'il doit désactiver l'option "Just My Code".

Puis, il va télécharger les symboles, cette opération peut prendre plusieurs minutes en fonction du fichier à télécharger : quelques Mo
Le call stack passe alors de gris à noir, en double cliquant sur une entrée du call stack, Visual Studio va automatiquement télécharger la source du framework si celle-ci n'a pas déjà été consulté.

Vous pouvez également charger tous les symboles d'un coup. Pour cela allez dans le menu Tools > Options, puis Debugging > Symbols, enfin cliquez sur le bouton "Load symbols from Microsoft symbol servers".

Cela va charger tous les symboles du framework .net, cela peut prendre plusieurs minutes.
Lorsque vous avez chargé un symbole, vous n'avez plus besoin de le recharger, VS le fera automatiquement pour vous.
Un peu plus loin dans cette fonctionnalité !
Point d'arrêt
Vous voulez pouvoir mettre un point d'arrêt dans le code du framework ? Si vous le faites comme d'habitude, par défaut cela ne fonctionnera pas, en effet Visual Studio demande que le fichier source soit exactement le même que celui ayant servi pour construire le pdb. Pour enlever cette limitation, faites un clic droit sur votre point d'arrêt puis "Location ..."
Enfin, cocher la case "Allow the source code to be different from the original version"

Votre point d'arrêt fonctionnera alors comme d'habitude. Vous pouvez également cocher cette case une bonne fois pour toute dans le menu Debug > Tools > Debugging.
Variable non accessible / optimisé
Dans certains cas, certaines variables ne sont pas accessible, vous avez le message "Cannot obtain value of local or argument 'currentTarget' as it is not available at this instruction pointer, possibly because it has been optimized away." Cela vient du fait que la CLR a été optimisé via NGEN. Il est possible d'indiquer à la CLR de ne pas charger les images pre-JIT (via NGEN). Cet astuce est décrit dans la FAQ du site site Microsoft Reference Source Code Center : FAQ
Si vous voulez accéder à toutes les sources du framework vous pouvez télécharger un zip ici : Available Source Code Components
D'autres astuces sur la consultation des sources du framework ? Je n'ai pas réussi à trouver comment faire un "step into" d'une méthode du framework si la source n'est pas déjà téléchargé, par exemple rentrer dans Math.Abs, une idée ?