早就聽說
reflector
這個強大的類庫分析與反編譯工具,不過一直沒有很好的利用起來。最近使用
reflector
解決了乙個實際開發問題,現將其總結出來。
需求匯入:專案是乙個
gis專案,在專案中使用到了
esri
公司的中的乙個
webcontrols
控制項,此控制項的功能過於複雜,並且引用到了
arcgis server
的很多com
元件。由於專案根本就沒有使用
adf的任何伺服器技術,但是也不得不跟著引用一些
com元件,更麻煩的是還得安裝
adf(此元件可是有將近
200m
的龐然大物)。
專案經理需要我解決這種問題並且必須盡快解決,我當時也相應的考慮到了兩個方案:
重新寫乙個類似的控制項,此控制項只做專案中用到的一些功能,至於其它功能以後再擴充套件;
利用esri
的webcontrols
控制項,去掉對
com的所有引用,因為專案沒有使用
webcontrols
控制項的任何伺服器技術,也就無需
com引用
由於時間有限,所以決定採用第二種方案,一開始使用
ildasm
分析了web server
控制項的一些類,發現過於類過於龐大。偶然想起了
reflector
工具(我以前使用過
reflector
工具分析過源**,不過好久沒用),以下是整個解決過程:
開啟reflector
filedisassembler
外掛程式用於輸出程式集的反編譯結果到檔案中。開啟
reflector
工具,並匯入
filedisassembler
外掛程式。匯入好後引導程式集將反編譯結果輸出到指定的資料夾中;
reflector
位址,使用者名稱中必須有空格;
filedisassembler
使用vs.net
新建乙個專案,根據資料夾結構新建相應的資料夾,匯入所有的原始檔和資源檔案。使用
filedisassembler
匯出的資源檔案為全名稱,在實際的專案中必須根據
namespace
更改資源檔名且必須將「生成操作」更改為「嵌入的資源」,可以使用
ildasm
檢視metadata
來決定資源檔名及所在的資料夾,編譯並更改一些錯誤;
當編譯好後,找到所有與
com有關的內容將其注釋掉(因為以前使用過
ccw/rcw
技術),並做相應的更改,每更改乙個
class
後,編譯一次,直到去掉其相關引用為止;
更改完成後,需要對其進行重構,主要重構以下方面:
當重構完成後,應用到專案中,並更改相應的
register
語句,test
,run
,結果是
successful
,從而也在最短的時間內完成了專案經理所交給我的任務。
先行說明:在
reflect
時,請遵守
esri
公司的end user licenses。
linux使用手記
本文會根據筆者實踐不斷更新 一.安裝星際譯王 stardict 星際譯王是用gtk2開發的跨平台的國際化的詞典軟體。它具有 萬用字元匹配 選中區取詞 模糊查詢 等強大功能。所以他不僅僅是漢英和英漢詞典 目前星際譯王的詞庫很多 但國人大多還是用英漢和漢英比較多 官方主站 http stardict.s...
virtualbox使用手記
系統 ubuntu 8.10 機器上的windows崩潰了,就裝了個virtualbox,虛擬安裝了個virtualbox 先是用的apt源上的virtualbox ose,後來發現這個版本沒辦法支援usb裝置 於是換成了官方提供的新版本 http www.virtualbox.org wiki l...
git使用手記
結合vscode使用git遠端傳專案 在vscode中 檢視 開啟命令面板,輸入git安裝 進入到專案資料夾,git clone http 要傳的位址 git config list git config e global git config user.name 括號裡面寫你的github名字 g...