有没有好的程序可以比较编译.NET程序集?
例如我有HelloWorld.dll(1.0.0.0)和HelloWorld.dll(2.0.0.0),我想比较差异我该怎么做?
我知道我可以使用.NET Reflector并使用Assembly Diff插件。还有其他好的工具吗?
答案 0 :(得分:43)
答案 1 :(得分:24)
两种方式。
您可以使用经典工具进行ILDASM和差异化。
或者您可以使用NDepends,这将花费该功能。
[片到C#bloaters ..]
答案 2 :(得分:11)
我只需要比较相同DLL的两个版本,它们具有相同的版本(我需要实现一个小的修补程序,并在生产中部署DLL,但我想确保没有其他更改泄漏到代码中) 。理想情况下,我希望Assemby Diff插件向我展示差异,但它不起作用(它认为我正在将DLL与自身进行比较)。所以这就是我所做的:
这有点笨拙,但似乎有效。我希望Assembly Diff插件工作正常。
更新:最新版本的Assembly Diff插件应该可以解决比较同一个程序集的两个版本的问题。试一试。
答案 3 :(得分:7)
工具NDepend提供了许多处理.NET代码差异的功能。 免责声明:我是该工具的开发人员之一。
面板按更改搜索专用于浏览程序集代码差异。请注意:
另请注意,屏幕截图中会生成CQLinq code query来浏览差异。
from m in Application.Methods
where m.CodeWasChanged()
select new { m, m.NbLinesOfCode }
默认情况下会提出许多其他默认的diff查询和规则,这样可以让您以智能方式浏览.NET代码差异。
答案 4 :(得分:1)
另一个选项是来自Microsoft的LibCheck。
非常老的控制台工具,用于获取公共API差异。如果没有调试并重新定位到更新的.net版本,我就无法运行。但是,它给了我非常明确的输出,我将在以后使用它。
这是一张带有屏幕截图的article。
答案 5 :(得分:-7)
Java有一个很好的:Semantic Diff Utilities