如何比较两个dll的内容?

时间:2010-07-23 03:34:29

标签: .net dll comparison disassembly

我想将一个安装的几个dll与我正在使用的另一个应用程序安装的几个dll进行比较。我需要确保它们完全相同。如何比较两个dll以确保它们具有完全相同的方法,属性,版本等?

我已经开始使用RedGate .Net Reflector,但任务变得乏味,所以我想我会给出一个镜头,看看是否有其他人曾经处于我的状态并且有快速的解决方案。

谢谢!

4 个答案:

答案 0 :(得分:7)

我假设你不能依靠汇编版本来回答这个问题。

google上的Scott Hanselman快速搜索了{{3}}这篇帖子,指出了可以解决问题的几种工具。

答案 1 :(得分:3)

我一直使用WinMerge来完成这项任务。您甚至可以比较整个目录。当然,如果您只是需要知道它们是否相同,因为它不会向您显示任何代码。

答案 2 :(得分:3)

为什么不使用Dependency Walker?将所有导出的函数复制到文本文件中。 对其他DLL重复相同的操作。 然后diff两个文本文件。

我做了一次解决错误127,它说它无法加载DLL,因为缺少“未知”依赖项。

答案 3 :(得分:2)

编辑:对于非程序化确定提示,请参阅confusedGeeks回答: - )

我会使用SN程序集来确定“版本”,然后;

如果版本中未反映ABI,请对文件执行辅助md5sum或执行两个程序集的反射比较。即使ABI没有改变,md5sum当然会“捕获”内部/编译变化。反映ABI,虽然更复杂,可能是狗慢,但可以确定ABI的变化。

使用相同版本“覆盖”任何程序集可能只是最简单和充分的(并允许之前/之后的版本保留,直到被任何人放置到其中)。