.net 如何比较两个DLL的内容?

.net 如何比较两个DLL的内容?,.net,dll,comparison,disassembly,.net,Dll,Comparison,Disassembly,我想将一个安装的几个DLL与我正在使用的应用程序的另一个安装的几个DLL进行比较。我需要确保它们完全相同。如何比较两个DLL以确保它们具有完全相同的方法、属性、版本等 我已经开始使用RedGate.Net Reflector,但任务变得单调乏味,所以我想我应该试一试,看看是否有人曾经遇到过我的情况,并有一个快速的解决方案 谢谢大家! 我假设您不能依赖程序集版本控制来回答这个问题 快速搜索这篇文章,可以找到一些可以解决您问题的工具。编辑:有关非程序性决定提示,请参阅confusedGeeks答案:

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

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


谢谢大家!

我假设您不能依赖程序集版本控制来回答这个问题


快速搜索这篇文章,可以找到一些可以解决您问题的工具。

编辑:有关非程序性决定提示,请参阅confusedGeeks答案:-)

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

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


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

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

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


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

程序集的序列号不隐式包含ABI信息:-/Yes我意识到,OP需要同时比较两个程序集这一事实表明它们存在一些版本管理问题。是的,两个版本的程序集版本控制从未更新过,因此,我试图帮助一些客户找到他们使用的版本。Scott Hanselman dotnet reflector插件很有帮助,但不像我希望的那样自动化:)md5sum是否足以验证他们是否相同?因为我正在比较一个版本化的程序集和一个没有版本戳的程序集。。。这不会改变两者之间的md5sum吗?@Eric除非你担心一些非常非常聪明的NIHM黑客试图窃取你的奶酪,否则md5sum可以可靠地使用:不同的md5总和->不同的文件内容。