生成 .NET 库公共 API 的文本文件,用于版本控制和兼容性跟踪

Lil*_*ver 7 .net c# system.reflection

我维护了太多的 NuGet 包,并且我正在尝试找到一个工具来为每个程序集生成公共 API 表面的纯文本文件(如构建后步骤)。每个命名空间、类、接口、结构、方法签名、成员、字段都将是一行,全部按字母顺序排序。

每当我更改公共 API 界面时,文件都会发生src/PublicAPIs.txt更改,这将是令人惊奇的 - github diff 会立即向我显示我修改、删除或添加的内容,并且该文件对于跟踪 API 随着时间的推移发生的变化非常宝贵。

我认为,我不太可能意外暴露私有 API 或破坏现有 API。

我觉得这一定已经存在了,我只是错过了一些东西?我知道 Telerik JustAssembly 可以进行基本的 .dll 比较,但我正在寻找能够自动将文件写入 git 存储库的东西,这样我就不必记住打开工具,并且任何重大更改都会在我的过程中弹出。正常工作流程。

Kik*_*sen 0

如果我理解正确的话,你只想检查 API 是否有重大更改并警告是否有。我建议您对 API 使用 swagger,这样就可以轻松探索 API。但它也可用于检查/测试重大更改:

https://swagger.io/blog/api-development/using-swagger-to-detect-breaking-api-changes/

例如:

$ gem install swagger-diff
$ wget https://raw.githubusercontent.com/swagger-api/swagger-spec/master/examples/v2.0/json/petstore-minimal.json

$ wget https://raw.githubusercontent.com/swagger-api/swagger-spec/master/examples/v2.0/json/petstore-expanded.json

$ swagger-diff petstore-minimal.json petstore-expanded.json
Run Code Online (Sandbox Code Playgroud)

所以你只需要在构建时保存 swagger 文件

例如: https: //medium.com/@woeterman_94/how-to-generate-a-swagger-json-file-on-build-in-net-core-fa74eec3df1

如果您尚未使用 swagger:https://learn.microsoft.com/en-us/aspnet/core/tutorials/web-api-help-pages-using-swagger ?view=aspnetcore-6.0

希望这可以帮助 :)