有谁知道一个像样的工具,可以比较同一个 dll 的两个不同版本并提取差异?
谢谢
也可以使用 JetBrains 的dotPeek 。它也是免费的。
对要比较的程序集重复上述操作,然后在差异工具中打开这两个文件夹。我使用了 WinMerge。
您会注意到绝大多数文件都有差异。这是因为文件顶部有这样的注释
// MVID: {some guid here}
或者
// Assembly location: {some path here}
您可以在 WinMerge 中创建一个过滤器来忽略它
^// MVID:
^// Assembly location:
当您同意更改时,它将重新扫描文件夹并忽略以该注释开头的任何行。现在您应该只看到您感兴趣的更改。
为什么不先拆机再对比?
使用.NET Reflector(您只需要免费版)打开 dll,然后右键单击并选择将它们导出到单独的目录。
然后使用ExamDiff Pro比较目录(您可以获得 30 天免费试用)。您可以浏览子文件夹并根据需要在新的比较窗口中打开每个文件(只需在 ExamDiff Pro 窗口中双击)。 效果很棒!
ExamDiff Pro 还有一个 Dump PE32 插件,可以直接在 .dll 和 .exe 文件之间进行比较。这有助于查看标头更改和标记二进制差异,但不会为您反编译(因此请使用上面的 Reflector 方法)。
Microsoft BCL 团队有一个工具可以做到这一点,它叫做 LibCheck,可以在这里找到
http://blogs.msdn.com/b/bclteam/archive/2005/03/21/400123.aspx
这是一个旧工具,我不得不使用更高版本的运行时重新编译源代码,但它运行良好并提供有关更改的 html 报告。