有没有什么好的程序可以与编译 .NET 程序集进行比较?

例如,我有 HelloWorld.dll (1.0.0.0) 和 HelloWorld.dll (2.0.0.0),我想比较差异,我该怎么做?

我知道我可以使用 .NET Reflector 并使用 Assembly Diff 插件。还有其他好的工具可以做到这一点吗?

有帮助吗?

解决方案

比较 .NET 程序集的方法 建议

商业的:

自由的:

其他提示

的两种方法。

您可以ILDASM和DIFF与经典的工具。

或者你可以使用NDepends,这将为该要素成本。

[一块为C#bloaters ..]

我只需比较同一 DLL 的两个修订版,它们具有相同的版本(我需要实现一个小修补程序,并在生产中部署 DLL,但我想确保没有其他更改泄漏到代码中)。理想情况下,我希望 Assemby Diff 加载项向我显示差异,但它不起作用(它认为我正在将 DLL 与其自身进行比较)。这就是我所做的:

  • 创建两个文件夹来保存反汇编的源文件。
  • 使用了 反射器出口 选项(从上下文菜单)从上一步创建的文件夹中的每个 DLL 生成源文件。
  • 用过免费的 差异合并 比较两个目录的工具;这些工具向我展示了修改后的文件和差异。

这有点笨拙,但似乎有效。不过,我希望 Assembly Diff 插件能够工作。

更新:最新版本的 Assembly Diff 插件应该解决比较同一程序集的两个版本的问题。试一试。

工具 依赖型 提供许多功能来处理 .NET 代码差异。 免责声明:我是该工具的开发者之一.

面板 按变更搜索 专门用于浏览程序集代码差异。请注意:

  • 您可以将菜单使用的任何代码差异工具插入 NDepend 比较旧版本和新版本的源文件
  • 如果您没有源代码,只有原始程序集,则可以选择 比较用 Reflector 拆解的旧版本和新版本

NDepend Search by Diff Panel

另请注意,在屏幕截图中 CQLinq代码查询 生成用于浏览差异。

from m in Application.Methods 
where m.CodeWasChanged() 
select new { m, m.NbLinesOfCode }

默认情况下会建议许多其他默认差异查询和规则,这将让您以智能方式浏览 .NET 代码差异。

一个更选项是 LibCheck 来自Microsoft。

对于刚刚起步的公共API差异很老的控制台工具。我不能没有调试和重新定位运行到较新的.NET版本。然而,它给了我很清楚的输出,我会在以后使用它。

下面是一个屏幕截图文章

Java有一个很好的一个:语义DIFF工具

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top