2012-01-30 27 views

回答

5

Cecil不公開API來測試pdb和dll是否匹配。但是,當您閱讀程序集時,它會執行檢查,並嘗試讀取其符號。

但是,pdb匹配模塊究竟意味着什麼?

這意味着,PDB和模塊共享含有完全相同的GUID標識符的記錄,和PDB的修訂號(也稱爲年齡)。

有時你只想檢查GUID,有時候你想同時檢查兩者。塞西爾本身並沒有爲您提供重寫默認行爲的方法,但這是一個非常簡單的改變。看看PdbReader的來源。

目前的檢查是在PopulateFunctions,我們目前並沒有強制執行的PDB的年齡必須在同一個,在組裝調試記錄。您可以輕鬆地將其改爲更符合您的口味的東西。

或者你完全可以使用另一種工具:我一直在使用chkmatch滿意。

+0

+1 chkmatch。我也給自己建了一個工具,一旦被撕裂開塞西爾和猛地到一個WinForm診斷PDBS(源文件位置等),但代碼是如此醜陋,我將無顏發佈。儘管如此,寫了半個小時,所以很容易複製 – 2012-01-31 16:15:28