如何用 VS 2010 進行 Assembly 的逆向工程

如何用 VS 2010 進行 Assembly 的逆向工程

對於我們這種很不喜歡寫文件 或是 想要了解沒有 Source code 的 DLL ( Assembly ) 做逆向工程是一件非常合理的事情

 

若是看這篇文章是主管的話!那更應該要了解這件事對你來說有多重要

 

一、當老闆想要你在 三個月內把 系統開發好!我們當然沒有時間可以畫架構文件

 

這時我們就可以用工具逆向工程自動產生來產生圖形文件

 

這就非常有幫助,可以節省產生文件的時間

 

二、若專案因為開發時程非常地長而人員又一直異動時,你去那裡找人問這段程式碼的來龍去脈?

 

什麼?以前的人有畫圖喔!!

 

這時敢問那圖和程式碼真的是一致的嗎?相信沒幾個人能保證!

 

這時我們就可以用 VS 2010 逆向工程來確保一致性。完全不會花額外的時間在那裡畫圖

 

三、以前委外時開發的專案居然只剩下 DLL 元件了!程式碼都找不到??

 

這個時候要改怎麼辦?完全找不到人可以修改!自已重新寫也不知道要怎麼做

 

這時我們就可以用 VS 2010 逆向工程來了解 Assembly 之間的 class 、method 的耦合關係

 

都是非常非常地重要

 

 

 

大家都知道 VS 2010 現在可以做逆向工程

 

比如說專案的架構如下

image

 

image

一般都會載入專案後,直接產生 「相依性圖形」

這個方法比較快,一口氣全部產生

但對於超大又沒有分類的專案就不是很適合 ( 會看到 一堆的 class 散落在各處 )

image

當然連同「3rd party」也會一併畫出來

 

image

展開後也可以看到 Method 之間的關聯,這對於開發同仁來說非常地重要。

 

以後要把 Enterprise Library 拿掉後就可以知道,那些Method 有用到 DatabaseFactory 可以確保不會有漏改的問題

 

 

昨天 兒童節的時候 森哥問了很棒的問題

 

我是否可以針對沒有 source code 的 Assembly ( DLL )  逆向工程畫出  Class Diagram 之類的圖呢?

 

這當然是沒有問題的!

 

首先開發工具必須是  VS 2010 Ultimate SP1 + Feature Pack

詳細的情況可以參考

Visual Studio 2010 Ultimate 且有 MSDN 「專用」的 Feature Pack (1)

 

首先必須先有 模型專案

image

 

image

新增「有向圖形文件」或是 「UML 類別圖表」

 

image

開啟「架構總管」

 

image

可以看到只列出有 source code 的

 

若是 沒有 source code 又想要在清單中的話

 

請選擇 「檔案系統」—>「選取檔案」

image

 

image

這時就可以看到 Enterprise Library.Data.dll 元件所有 Class 和 method 出現在清單中

 

image

直接拖拉到「相依性圖形」或是「Class Diagram」就可以了

 

image

相依性圖形,當然也可以一直往上拖拉新的項目以便分析

 

image

Class Diagram 的樣式

 

 

 

參考 VSTS 2010 CTP 初步試用 - Architecture Explorer