在之前,MS的參考源代碼在單步調試時時好用時很差用,最後我找到了緣由,那就是若是想用MS的參考源代碼進行單步調試,那麼你就得想盡辦法把系統上的.NET FX降級到RTM版本(卸載各類相關補丁),今天我收到了MS的User Voice發來的郵件,告訴我參考源代碼已經升級,不只RTM版本可用,各個更新後的版本也可用(雖然僅僅針對.NET FX 4.5.1)。html
OK,打開 http://blogs.msdn.com/b/dotnet/archive/2014/02/24/a-new-look-for-net-reference-source.aspx。c#
發現有在線瀏覽功能,和離線打包下載,下載回來的代碼是有解決方案和項目文件的,也就是在VS裏面直接能導航等。瀏覽器
在線瀏覽歸功於 http://msdn.microsoft.com/en-US/roslyn ,微軟的Roslyn項目,VS系列編譯器的將來。app
在線示例:http://referencesource-beta.microsoft.com/#mscorlib/system/environment.cs字體
我下了離線源代碼:
http://referencesource-beta.microsoft.com/download.html
網站
而後發現了許多我曾經有興趣並想研究的代碼(包含了部分C++代碼):
DotNetReferenceSource.zip\Source\wpf\src\Shared\detours ,此目錄包含了微軟http://research.microsoft.com/en-us/projects/detours/項目的完整版本,版本號是Version 3.0 Build_306.注意MS上有社區版本,只支持X86,不支持AMD64,而這個是全的,支持X86 AMD64 IA64 ARM,之前在MS網站上賣的很貴的哦(剛纔沒找到賣的鏈接)。ui
DotNetReferenceSource.zip\Source\wpf\src\printing\cpp 此目錄包含了WPF系統打印部分代碼。spa
DotNetReferenceSource.zip\Source\wpf\src\host 此目錄包含WPF的Hosting 系列代碼,就是在瀏覽器裏面加載xaml進行渲染的部分。這是我曾經關注的。調試
DotNetReferenceSource.zip\Source\wpf\src\Graphics\include 這個沒代碼,僅有至關於頭文件的c#文件,但研究過WPF底層的朋友們會發現此處有不少結構體,正式WPF託管部分和Native引擎交互通訊用的數據交換結構。htm
DotNetReferenceSource.zip\Source\wpf\src\Core\cpp\dwritewrapper C++代碼,沒細看
DotNetReferenceSource.zip\Source\wpf\src\Core\cpp\truetypesubsetter 這個就比較有料了,WPF字體模糊是什麼緣由估計這部分代碼能讓你明白,他是用來柵格化truetype字體的,wpf的字體不是gdi渲染出來的,有本身的渲染引擎,估計就是這個了。
DotNetReferenceSource.zip\Source\vb 這個目錄是相對最完整的,包含了C++代碼的VB源代碼的編譯器,你沒看錯,是編譯器!並且不只是編譯器,還有不少好東西。
ok,Enjoy Yourself!