25

有谁知道一个像样的工具,可以比较同一个 dll 的两个不同版本并提取差异?

谢谢

4

6 回答 6

31

也可以使用 JetBrains 的dotPeek 。它也是免费的。

  • 在 dotPeek 中打开程序集
  • 选择装配体
  • 文件 --> 导出到项目
  • 选择磁盘上的位置

对要比较的程序集重复上述操作,然后在差异工具中打开这两个文件夹。我使用了 WinMerge

您会注意到绝大多数文件都有差异。这是因为文件顶部有这样的注释

// MVID: {some guid here}

或者

// Assembly location: {some path here}

您可以在 WinMerge 中创建一个过滤器来忽略它

  • 工具 --> 过滤器...
  • 转到“线路过滤器”选项卡
  • 添加以下过滤器^// MVID:
  • 添加以下过滤器(可选)^// Assembly location:
  • 选中新正则表达式旁边的复选框
  • 选中“启用线路过滤器”复选框

当您同意更改时,它将重新扫描文件夹并忽略以该注释开头的任何行。现在您应该只看到您感兴趣的更改。

于 2014-03-04T16:58:15.190 回答
16

Reflector 有一个Diff工具。注意:Reflector 现在是付费软件。

注意:Diff 工具不再可用。您仍然可以通过Softpedia下载它并将其与旧版本的 Reflector 一起使用(从 2010 年左右开始)。在以后的版本中,它不再起作用。

于 2009-02-26T14:55:40.463 回答
4

为什么不先拆机再对比?

于 2009-02-26T14:54:58.937 回答
4

检查http://www.red-gate.com/products/reflector/

于 2009-02-26T14:57:01.863 回答
4

使用.NET Reflector(您只需要免费版)打开 dll,然后右键单击并选择将它们导出到单独的目录。

然后使用ExamDiff Pro比较目录(您可以获得 30 天免费试用)。您可以浏览子文件夹并根据需要在新的比较窗口中打开每个文件(只需在 ExamDiff Pro 窗口中双击)。 效果很棒!

ExamDiff Pro 还有一个 Dump PE32 插件,可以直接在 .dll 和 .exe 文件之间进行比较。这有助于查看标头更改和标记二进制差异,但不会为您反编译(因此请使用上面的 Reflector 方法)。

于 2010-12-17T20:26:52.643 回答
0

Microsoft BCL 团队有一个工具可以做到这一点,它叫做 LibCheck,可以在这里找到

http://blogs.msdn.com/b/bclteam/archive/2005/03/21/400123.aspx

这是一个旧工具,我不得不使用更高版本的运行时重新编译源代码,但它运行良好并提供有关更改的 html 报告。

于 2014-03-17T09:41:33.883 回答