在构建时生成Swagger json

时间:2018-02-06 21:16:12

标签: visual-studio asp.net-core azure-devops swagger 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中的字段?我想编辑(取决于环境)以下字段:host,schemes和basePath。

我使用的是Swashbuckle.AspNetCore,但它似乎没有选项来执行此类任务,或者我错了吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

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

该命令将类似于以下内容,并且可以作为“构建后”脚本添加

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

更多详细信息,请点击https://github.com/domaindrivendev/Swashbuckle.AspNetCore#swashbuckleaspnetcorecli

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

答案 1 :(得分:0)

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

简单的工作流程:

  1. 通过Get-Content脚本
  2. 阅读文件
  3. 使用ConvertFrom-Json将内容转换为对象
  4. 将属性值设置为更新对象
  5. 使用ConvertTo-Json将对象转换为JSON格式的字符串
  6. 使用Set-Content将内容写入文件
  7. 有关详细代码,您可以参考此主题:how do I update json file using powershell

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