轉自:http://www.cnblogs.com/jv9/archive/2009/12/15/1622853.html
在互連網上,每天都會有很多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使用的裝配單檔案,以及類庫,和設定檔.
6. 下面可以使用大家都比較熟悉的反編譯軟體,Reflector來查看DLL中的資源和代碼檔案。 下載Reflector: http://www.red-gate.com/products/reflector/
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項目,查看其原始碼,下面我想介紹一款國外的共用軟體,也可以達到上面同樣的效果 - Silverlight SPY,
:http://silverlightspy.com/silverlightspy/download-silverlight-spy/
Silverlight SPY是一款共用軟體,該軟體可以自動擷取XAP檔案,幫你解析XAP中的檔案,該軟體和Reflector配合約樣可以查看Silverlight項目原始碼。
同時,可以分解項目中的樣式和UI,以及Isolated Storege展示給開發人員。
我們在地址欄輸入Silverlight.NET地址,即可得到,雙擊任何一個資源,在View視窗即可查看。