有没有什么好的程序可以用来比较编译 .NET 程序集?
例如,我有 HelloWorld.dll (1.0.0.0) 和 HelloWorld.dll (2.0.0.0),我想比较差异我该怎么做?
我知道我可以使用 .NET Reflector 并使用 Assembly Diff 插件。有没有其他好的工具可以做到这一点?
有没有什么好的程序可以用来比较编译 .NET 程序集?
例如,我有 HelloWorld.dll (1.0.0.0) 和 HelloWorld.dll (2.0.0.0),我想比较差异我该怎么做?
我知道我可以使用 .NET Reflector 并使用 Assembly Diff 插件。有没有其他好的工具可以做到这一点?
商业的:
自由:
Beyond Compare(商业)等现有的比较工具可以通过特殊配置来做到这一点。以下是如何为 Beyond Compare 执行此操作:
*.exe
或*.dll
ildasm
并添加 %s /OUT:%t /NOBAR
(即C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\ildasm.exe %s /OUT:%t /NOBAR
:)exe
文件进行比较,现在应该会ilasm
自动反编译成。您还可以为这种新格式添加语法突出显示。我计划将语法文件发送给他们,以便共享。
两种方式。
您可以使用经典工具进行 ILDASM 和 diff。
或者您可以使用 NDepends,这将花费该功能。
[片断 C# 臃肿..]
我只需要比较同一个 DLL 的两个版本,它们具有相同的版本(我需要实现一个小修补程序,并将 DLL 部署到生产环境中,但我想确保没有其他更改泄漏到代码中)。理想情况下,我希望 Assemby Diff 加载项向我展示差异,但它不起作用(它认为我正在将 DLL 与自身进行比较)。所以这就是我所做的:
这有点笨拙,但似乎有效。不过,我希望 Assembly Diff 插件能够正常工作。
更新:Assembly Diff 插件的最新版本应该解决比较同一程序集的两个版本的问题。试试看。
NDepend工具提供了许多功能来处理 .NET 代码差异。免责声明:我是该工具的开发人员之一。
Search by Change面板专门用于浏览程序集代码差异。请注意:
另请注意,在屏幕截图中生成了一个CQLinq 代码查询来浏览差异。
from m in Application.Methods
where m.CodeWasChanged()
select new { m, m.NbLinesOfCode }
默认情况下提出了许多其他默认差异查询和规则,这将使您能够以智能的方式浏览 .NET 代码差异。
另一种选择是来自 Microsoft的LibCheck 。
用于获取公共 API 差异的相当古老的控制台工具。如果不调试并重新定位到更新的 .net 版本,我就无法运行。但是,它给了我非常清晰的输出,我稍后会使用它。
这是一篇带有屏幕截图的文章。
Java 有一个不错的:Semantic Diff Utilities