【发布时间】:2009-02-26 14:53:19
【问题描述】:
有没有人知道一个不错的工具,可以比较同一个 dll 的两个不同版本并提取差异?
谢谢
【问题讨论】:
标签: .net disassembly
有没有人知道一个不错的工具,可以比较同一个 dll 的两个不同版本并提取差异?
谢谢
【问题讨论】:
标签: .net disassembly
也可以使用来自 JetBrains 的dotPeek。它也是免费的。
对要比较的程序集重复上述操作,然后在差异工具中打开这两个文件夹。我用WinMerge。
您会注意到绝大多数文件都存在差异。这是因为文件顶部有这样的注释
// MVID: {some guid here}
或
// Assembly location: {some path here}
你可以在 WinMerge 中创建一个过滤器来忽略它
^// MVID:
^// Assembly location:
当您确认更改后,它将重新扫描文件夹并忽略以该注释开头的任何行。现在您应该只看到您感兴趣的更改。
【讨论】:
^// 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 报告。
【讨论】: