我想将一个安装的几个 dll 与我正在使用的应用程序的另一个安装的几个 dll 进行比较。我需要确保它们完全相同。如何比较两个 dll 以确保它们具有完全相同的方法、属性、版本等?
我已经开始使用 RedGate .Net Reflector,但任务变得乏味,所以我想我会试一试,看看是否有其他人以前遇到过我的情况并有一个快速的解决方案。
谢谢!
我想将一个安装的几个 dll 与我正在使用的应用程序的另一个安装的几个 dll 进行比较。我需要确保它们完全相同。如何比较两个 dll 以确保它们具有完全相同的方法、属性、版本等?
我已经开始使用 RedGate .Net Reflector,但任务变得乏味,所以我想我会试一试,看看是否有其他人以前遇到过我的情况并有一个快速的解决方案。
谢谢!
我假设您不能依靠程序集版本来回答这个问题。
在谷歌上快速搜索发现了Scott Hanselman的这篇文章,其中指出了几个可以解决你问题的工具。
我一直使用WinMerge来完成这项任务。您甚至可以比较整个目录。这当然是如果您只需要知道它们是否相同,因为它不会显示任何代码。
为什么不使用 Dependency Walker?将所有导出的函数复制到一个文本文件中。对另一个 DLL 重复相同的操作。然后比较这两个文本文件。
我这样做是为了解决错误 127,它说它无法加载 DLL,因为缺少“未知”依赖项。
编辑:对于非编程确定提示,请参阅困惑的答案:-)
然后,我将使用 SN 程序集来确定“版本”;
如果 ABI 未反映在版本中,请对文件执行辅助 md5sum 或对两个程序集执行反射比较。即使 ABI 没有改变, md5sum 当然会“捕获”内部/编译更改。反映 ABI,虽然更复杂并且可能会很慢,但可以确定 ABI 的变化。
使用相同版本“覆盖”任何程序集可能是最简单和足够的(并让以前/以后的版本保持不变,直到被放置它们的人删除)。