Browsing the .NET Framework source code from Visual Studio

I just discovered this extension that pretty much addresses my problem. The only thing is that it opens the source in the browser rather than in Visual Studio, but it's no big deal because even in the browser you can click the source code to navigate to types etc.

It was presented on Scott Hanselman's blog a couple of days ago:

Community member and fabulous coder Schabse Laks has created a Visual Studio extension for VS2010, 2012, and 2013! This extension sends calls to Go To Definition (or pressing F12 on a symbol) directly to the code online (when it's .NET Framework code, not yours).

You can download this companion "Ref12" Visual Studio Extension now! Just Goto Definition on any .NET type we have source for and it'll launch your default browser so you can explore the .NET Framework source yourself! Thanks Schabse!

Update:

As per the comments, for VS 2022 and .NET Core, use this fork of the extension: https://marketplace.visualstudio.com/items?itemName=EfreyKong.Ref12-VS2022


I downloaded the .NET Framework source code from here http://referencesource.microsoft.com/netframework.aspx.

Since I am working with .NET 4.0, I chose ".Net/4" from the list. (What is ".NET/8.0" in that list? No idea.)

I wrote some scripts to rearrange the bloody mess they give us:

  • Into a reasonable hierarchy of directories;
  • To remove duplicated code (why is every file doubled, or was my install bad?);
  • Rename all top-level namespaces to not conflict with native ones baked into Intellisense.
  • Example: System.Windows.Controls -> xSystem.Windows.Controls

Then follow these steps:

  1. Create a new Visual Studio project of type "Class Library"
  2. Remove all references -- yes, even the system ones.
  3. Drag/drop all of your massaged .NET code into the root of your project.
  4. Wait about 30 minutes for VS processing. VS will appear to freeze; be patient.

Intellisense/ReSharper still complains about heaps of problems, but now I can right click and select "Go to Declaration/Implementation".

Visual Studio is about 600MB with this project loaded.


With ReSharper it's possible to browse .NET sources by enabling ReSharper -> Options -> Tools -> External Sources -> Navigation to Sources. After enabling this option new menu item "Navigate To -> Decompiled Sources" appears by right click on type/method/whatever. Navigation also works with F12 for me.


There is a very new feature in Visual Studio 2017 version 15.6

You can see decompiled source code without any plugin! Btw, Ref12 doesn't work for VS2017.

Tools > Options , expand Text Editor > C# > Advanced, and enable "Enable navigation to decompiled sources (experimental)".

Ref: https://docs.microsoft.com/en-us/visualstudio/ide/go-to-and-peek-definition?view=vs-2017#view-decompiled-source-definitions-instead-of-metadata-c