2010-07-23 159 views
6

我想比較一個安裝的幾個dll到我正在使用的應用程序的另一個安裝的幾個dll。我需要確保它們完全相同。如何比較兩個dll以確保它們具有完全相同的方法,屬性,版本等?如何比較兩個dll的內容?

我已經開始使用RedGate .Net Reflector,但是任務變得單調乏味,所以我想我會給你一個鏡頭,看看其他人是否已經處於我之前的狀態,並且有一個快速解決方案。

謝謝!

回答

7

我假設你不能依靠程序集版本來回答這個問題。

快速搜索google轉過來這個帖子Scott Hanselman,指向幾個工具,可以解決您的問題。

+0

程序集的SN不隱含地包含ABI信息: -/ – 2010-07-23 03:49:24

+0

是的我意識到,OP需要比較兩個程序集在一起的事實表明它們是一些版本管理問題。 – 2010-07-23 03:57:11

+0

是的,組件的版本從未更新過兩個版本,所以我試圖幫助一些客戶找到他們的版本。 – Eric 2010-07-23 04:20:30

2

編輯:對於非計劃性決定的提示,請參閱confusedGeeks回答:-)

我會用一個SN組裝確定的「版本」,那麼,

如果ABI未在版本中反映,請針對這些文件執行輔助md5sum或對這兩個程序集執行反射比較。即使ABI沒有變化,md5sum當然也會「捕捉」內部/編譯變化。反映ABI,雖然更復雜並且可能很慢,但可以確定ABI變化。

它可能是最簡單和足夠的,只需「覆蓋」任何具有相同版本的程序集(並讓先前/更高版本保留,直到被放置的人刪除)。

+0

是一個足以驗證它們是相同的md5sum?由於我比較版本化的程序集和沒有版本標記的程序集...不會改變兩者之間的md5sum嗎? – Eric 2010-07-23 04:39:36

+0

@Eric除非您擔心一些非常非常聰明的NIHM黑客試圖竊取您的奶酪,否則可以可靠地使用md5sum:不同的md5總和 - >不同的文件內容。 – 2010-07-23 08:17:59

2

我一直使用WinMerge來做這個任務。你甚至可以比較整個目錄。當然,如果你只需要知道它們是否相同,因爲它不會顯示任何代碼。

3

爲什麼不使用Dependency Walker?將所有導出的函數複製到文本文件中。 對另一個DLL重複相同的操作。 然後比較兩個文本文件。

我這樣做了一次,以解決錯誤127,它表示無法加載DLL,因爲缺少'未知'依賴項。