最近我大幅度重构了我一个库的项目结构,使之使用最新的项目文件格式(基于 Microsoft.NET.Sdk)并使用 SourceYard 源码包来打包其中的一些公共代码。不过,最终生成了一个新的 dll 之后却心有余悸,不知道我是否删除或者修改了某些 API,是否可能导致我原有库的使用者出现意料之外的兼容性问题。
另外,准备为一个产品级项目更新某个依赖库,但不知道更新此库对我们的影响有多大,希望知道目前版本和希望更新的版本之间的 API 差异。
索性发现了 JustAssembly 可以帮助我们分析程序集 API 的变化。本文将介绍如何使用 JustAssembly 来分析不同版本程序集 API 的变化。
下载和安装 JustAssembly
JustAssembly 是 Telerik 开源的一款程序集分析工具。
你可以去它的官网下载并安装:Assembly Diff Tool for .NET - JustAssembly。
开始比较
启动 JustAssembly,在一开始丑陋(逃)的界面中选择旧的和新的 dll 文件,然后点击 Load
。
然后,你就能看到新版本的 API 相比于旧版本的差异了。
关于比较结果的说明
在差异界面中,差异有以下几种显示:
- 没有差异
- 以白色底显示
- 新增
- 以绿色底辅以
+
符号显示
- 以绿色底辅以
- 删除
- 以醒目的红色底辅以
-
符号显示
- 以醒目的红色底辅以
- 有部分差异
- 以蓝紫色底辅以
~
符号显示
- 以蓝紫色底辅以
这里可能需要说明一下“部分差异”:由于差异是以树状结构显示的,所以如果子节点有新增,那么父节点因为既有新增又存在未修改的节点,所以会以“有部分差异”的方式显示。
对于每一个差异,双击可以去看差异的代码详情。
上图我的 SourceFusion 项目在版本更新的时候只有新增的 API,没有修改和删除的 API,所以还是一个比较健康的 API 更新。
参考资料
本文会经常更新,请阅读原文: https://blog.walterlv.com/post/compare-api-between-two-assemblies-using-just-assembly.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 ([email protected]) 。