比较编译的.NET程序集?

Dan*_*y G 49 .net c# vb.net debugging reverse-engineering

是否有任何好的程序可以比较编译.NET程序集?

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

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

Dan*_*ant 45

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

商业:

自由:

  • 我今天花了20分钟尝试使用反射器添加,我不认为它的工作原理.我尝试比较在2个不同目录中命名相同的2个程序集. (3认同)
  • Telerik的JustDecompile允许你这样做,但它有些手动 - 你使用"创建项目"方法为每个生成源文件(显然是在不同的目录中),然后使用Beyond Compare或DiffMerge等来比较源代码. (2认同)

ram*_*oti 24

两种方式.

您可以使用经典工具ILDASM和diff.

或者您可以使用NDepends,这将花费该功能.

[片到C#bloaters ..]

  • +1,只是ildasm两个文件,然后diff文本输出; 你不需要昂贵的东西 (3认同)

Ale*_*vis 11

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

  • 创建了两个文件夹来保存反汇编的源文件.
  • 使用ReflectorExport选项(从上下文菜单)生成上一步创建的文件夹中每个DLL的源文件.
  • 使用免费的DiffMerge工具比较两个目录; 这些工具向我展示了修改后的文件和区别.

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

更新:最新版本的Assembly Diff加载项应该可以解决比较同一程序集的两个版本的问题.试试看.


Pat*_*eam 7

NDepend工具提供了许多处理.NET代码差异的功能.免责声明:我是该工具的开发人员之一.

" 按更改搜索 "面板专用于浏览程序集代码差异.请注意:

  • 您可以插入NDepend菜单使用的任何代码差异工具比较较旧和较新版本的源文件
  • 如果你没有源代码,只有原始程序集,那么有一个选项比较旧的和更新的版本反汇编与Reflector

NDepend按差异面板搜索

另请注意,屏幕截图中生成了一个CQLinq代码查询来浏览diff.

from m in Application.Methods 
where m.CodeWasChanged() 
select new { m, m.NbLinesOfCode }
Run Code Online (Sandbox Code Playgroud)

许多其他默认的diff查询和规则是默认提出的,这将允许您以智能方式浏览.NET代码差异.

  • 对于那些开源开发者,我们总是很高兴赞助一个免费许可的公共OSS项目,只需联系我们.此外,试用版已经发展,您现在可以下载为期14天的全功能试用版(包括差异功能) (2认同)