在網際網路上,每天都會有很多Silverlight項目釋出,有的是開源,有的隻是為了展示。在Silverlight學習的初期,多數都需要模仿學習,是以,發現一個Silverlight項目,能夠檢視其中的源代碼是最好不過了。但是,Silverlight釋出,隻是釋出資源包XAP,而所有資源都在這個XAP檔案中,該如何檢視其中的資源和代碼呢?下面我将示範反編譯的方法,示範中我将用Silverlight.Net首頁Silverlight作為例子。
1. 首先打開Silverlight.Net,該頁面中包含一個Silverlight導航動畫;

2. 在浏覽器中,點選右鍵,檢視頁面源代碼;
3. 在html源代碼中搜尋"xap",很快就能定位出xap的位置。
我們看到<param name="Source" value="clientBin/showcasenav/ShowcaseNav.xap" />,該value就是xap在伺服器端的位置。
4. 我們使用同樣的域名,來擷取目前的xap檔案。打開新的浏覽器,在位址欄輸入:http://www.silverlight.net/clientBin/showcasenav/ShowcaseNav.xap,這時浏覽器會提示你下載下傳該xap檔案。
5. 重新命名下載下傳下來的檔案ShowcaseNav.xap,為 ShowcaseNav.zip. 然後解壓該壓縮包到同一個目錄. 在目錄中,會看到該Silverlight使用的裝配單檔案,以及類庫,和配置檔案。
7. 在Reflector中輕按兩下“MsCommunities.Silverlight.ShowcaseNav”,展開檔案會看到DLL和Resources,其中Resources中包含這所有的xaml檔案和圖檔檔案,DLL中都是類庫背景代碼。
8. 點選進入Reources目錄,輕按兩下“MsCommunities.Silverlight.ShowcaseNav.g.resources”,在Reflector右邊可以看到資源清單,選中任意一個想檢視代碼的檔案,點選右鍵“Save As”,儲存到本地,即可使用VS2008或者文本編輯軟體檢視代碼内容。
9. 對應着每個資源檔案會有類庫代碼,輕按兩下“MsCommunities.Silverlight.ShowcaseNav.dll”,再輕按兩下“MsCommunities.Silverlight.ShowcaseNav”,可以檢視各個類庫檔案,這裡,我們選中"ItemAdvanceControl“,在Reflector右邊即可看到反編譯代碼。
Silverlight SPY是一款共享軟體,該軟體可以自動擷取XAP檔案,幫你解析XAP中的檔案,該軟體和Reflector配合同樣可以檢視Silverlight項目源代碼。同時,可以分解項目中的樣式和UI,以及Isolated Storege展示給開發人員。我們在位址欄輸入Silverlight.NET位址,即可得到,輕按兩下任何一個資源,在View視窗即可檢視。