由於CCR的源碼並沒有直接公開,所以我們需要藉助一些工具來窺探它的秘密。
分析CCR需要如下的工具
MS Robotic Studio Express 2008R2,這個就不用解釋了,安裝它就是為了獲得CCR
Reflector & FileDisassembler,Reflector有兩個作用,一個是用來把CCR的dll檔案反編譯到C#語言,第二個是直接對CCR進行一些分析,而這些分析在VS中並不容易。FileDisassembler是Reflector的一個外掛程式,用來把反編譯的結果匯出為一個C#工程。
Visual C# 2008 Express or Visual Studio 2010 beta2(推薦,因為VS 2010大大增強了多線程調試能力)
以上工具皆可合法的免費獲得
CCR源碼和例子程式
Microsoft.Ccr.Core.dll是我們本次要研究的對象。為了分析和調試的方便,我們需要把它用Reflector和FileDisassembler反編譯。注意,反編譯後的源碼可能有些問題,下面記載了幾個比較重要的修改:
1. Resource檔案。我們需要先刪除Reflector產生的Resource1.cs,然後建立一個名為Resource1.resx的資源檔,把Reflector產生的Microsoft.Ccr.Core.resx中的字串全部複製到Resource1.resx中,最後刪除原來的Microsoft.Ccr.Core.resx
2. Dispatcher.cs中有兩個靜態變數的初始化順序不正確,需要吧TraceSwitchCore的聲明和初始化語句放在檔案最頂端。
Sample Code,為了統一起見,我選擇了MSDN Mag中的這篇文章中的代碼。
解壓Sample Code後,用VS建立一個CCRDemo的project,把解壓得到的代碼添加到CCRDemo項目中,再把反編譯得到的CCR源碼工程也加入這個Solution中,最後給CCRDemo添加CCR的引用。如果能編譯並運行CCRDemo,則說明我們的分析環境已經構建好了。