15

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

我已经开始使用 RedGate .Net Reflector,但任务变得乏味,所以我想我会试一试,看看是否有其他人以前遇到过我的情况并有一个快速的解决方案。

谢谢!

4

4 回答 4

8

我假设您不能依靠程序集版本来回答这个问题。

在谷歌上快速搜索发现了Scott Hanselman的这篇文章,其中指出了几个可以解决你问题的工具。

于 2010-07-23T03:42:44.427 回答
7

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

于 2010-07-23T03:57:38.510 回答
4

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

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

于 2010-07-23T03:58:05.177 回答
2

编辑:对于非编程确定提示,请参阅困惑的答案:-)

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

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

使用相同版本“覆盖”任何程序集可能是最简单和足够的(并让以前/以后的版本保持不变,直到被放置它们的人删除)。

于 2010-07-23T03:54:12.497 回答