在构建时生成 Swagger json

mou*_*dat 12 visual-studio swagger azure-devops asp.net-core asp.net-core-webapi

我正在开发一个 ASP.NET Core WebAPI 项目,我正在尝试找到一种在构建时生成 swagger json 的方法?

由于我正在使用 4 个环境,因此我希望有 4 个 swagger.json 具有我选择的不同名称,例如:

  • swagger_{appName} dev {buildNumber}.json
  • swagger_{appName}演示{buildNumber}.json
  • swagger_{appName} int {buildNumber}.json
  • swagger_{appName}暂存{buildNumber}.json

是否也可以编辑 json 中的字段?我想编辑(取决于环境)以下字段:主机、方案和基本路径。

我正在使用 Swashbuckle.AspNetCore,但它似乎没有选项来执行此类任务,还是我错了?

提前致谢

小智 10

您可以选择从命令行生成 OpenApi json 文件,而无需使用Swashbuckle.AspNetCore.Clinuget 包进行部署。

该命令看起来像这样,可以作为“构建后”脚本添加

dotnet <nugetpackages>\Swashbuckle.AspNetCore.Cli\bin\$(Configuration)\netcoreapp<ver>\dotnet-swagger.dll tofile --host http://localhost --output swagger.json <bin>\<AssemblyName>.dll v1
Run Code Online (Sandbox Code Playgroud)

更多详细信息可以在这里找到https://github.com/domaindrivendev/Swashbuckle.AspNetCore#swashbuckleaspnetcorecli

我不确定是否要立即为每个环境生成单独的文件


sta*_*SFT -1

简单的方法是使用PowerShell任务更新 json 文件并使用其他名称保存。

简单的工作流程:

  1. 通过Get-Content脚本读取文件
  2. 使用ConvertFrom-Json将内容转换为对象
  3. 设置属性值以更新对象
  4. 使用ConvertTo-Json将对象转换为 JSON 格式的字符串
  5. 使用Set-Content将内容写入文件

详细代码可以参考这个帖子:how do I update json file using powershell

内部版本号值存储在预定义变量中:Build.BuildNumber(PowerShell $env:BUILD_BUILDNUMBER:)

  • 我会看一下这个;)但是第一步是读取 json 文件,如果工件中不存在该文件,我该如何读取它?(构建项目时,有 .dll、.deps.json、.pdb、.runtimeconfig.json 和 .runtimeconfig.dev.json,但内部没有 swagger.json 的迹象) (2认同)