比较已编译的 .NET 程序集?
-
19-08-2019 - |
题
有没有什么好的程序可以与编译 .NET 程序集进行比较?
例如,我有 HelloWorld.dll (1.0.0.0) 和 HelloWorld.dll (2.0.0.0),我想比较差异,我该怎么做?
我知道我可以使用 .NET Reflector 并使用 Assembly Diff 插件。还有其他好的工具可以做到这一点吗?
解决方案
其他提示
的两种方法。
您可以ILDASM和DIFF与经典的工具。
或者你可以使用NDepends,这将为该要素成本。
[一块为C#bloaters ..]
我只需比较同一 DLL 的两个修订版,它们具有相同的版本(我需要实现一个小修补程序,并在生产中部署 DLL,但我想确保没有其他更改泄漏到代码中)。理想情况下,我希望 Assemby Diff 加载项向我显示差异,但它不起作用(它认为我正在将 DLL 与其自身进行比较)。这就是我所做的:
- 创建两个文件夹来保存反汇编的源文件。
- 使用了 反射器的 出口 选项(从上下文菜单)从上一步创建的文件夹中的每个 DLL 生成源文件。
- 用过免费的 差异合并 比较两个目录的工具;这些工具向我展示了修改后的文件和差异。
这有点笨拙,但似乎有效。不过,我希望 Assembly Diff 插件能够工作。
更新:最新版本的 Assembly Diff 插件应该解决比较同一程序集的两个版本的问题。试一试。
工具 依赖型 提供许多功能来处理 .NET 代码差异。 免责声明:我是该工具的开发者之一.
面板 按变更搜索 专门用于浏览程序集代码差异。请注意:
- 您可以将菜单使用的任何代码差异工具插入 NDepend 比较旧版本和新版本的源文件
- 如果您没有源代码,只有原始程序集,则可以选择 比较用 Reflector 拆解的旧版本和新版本
另请注意,在屏幕截图中 CQLinq代码查询 生成用于浏览差异。
from m in Application.Methods
where m.CodeWasChanged()
select new { m, m.NbLinesOfCode }
默认情况下会建议许多其他默认差异查询和规则,这将让您以智能方式浏览 .NET 代码差异。
Java有一个很好的一个:语义DIFF工具
不隶属于 StackOverflow