2011-07-11 64 views
4

我想比較兩個位於不同位置的相同.net dll。因此,我使用System.Reflection.Assembly.LoadFile(filename)而不是System.Reflection.Assembly.LoadFrom(filename)加載dll。但是要比較的.dll文件需要引用其他程序集(與相應的dll位於同一個文件夾中)。使用LoadFile(filename)加載DLL隨後GetTypes()將拋出一個ReflectionTypeLoadException。我應該如何加載兩個相同的dll使用反射,以獲得他們的類型&比較?C# - 使用反射比較兩個.net dll

+0

什麼是你實際上是想通過比較同一的DLL來實現呢?如果你只是想看看組件裏面有什麼,你可以不使用像Telerik Just Decompile或IlSpy這樣的工具嗎? – nabeelfarid

+0

我有一個任務來創建將比較兩個不同版本的DLL的應用程序。因此,我需要比較相同的dll(不同版本)並找出更改。 – user386527

+2

也許一些單塞西爾基礎? – CodesInChaos

回答

1

如果你只是想比較兩個組件,你當然不需要加載他們。我會建議一個更靜態的方法,基於Mono.Cecil

它將允許您以簡單的方式比較模塊,類型,方法 - 即使在指令級別。

入門文檔可以在這裏找到:

https://github.com/jbevain/cecil/wiki/HOWTO