在构建时生成Swagger json

s2j5cfk0  于 9个月前  发布在  其他
关注(0)|答案(3)|浏览(63)

我正在做一个ASP.NET Core WebAPI项目,我想找到一种在构建时生成swagger json的方法。
由于我正在使用4个环境,我希望有4个swagger.json,并选择不同的名称,例如:

  • swagger_{appName}dev{buildNumber}.json
  • swagger_{appName}demo{buildNumber}.json
  • swagger_{appName}int{buildNumber}.json
  • swagger_{appName}staging{buildNumber}.json

也可以编辑JSON中的字段吗?我想编辑(取决于环境)以下字段:host、schemes和basePath。
我正在使用Swashbuckle.AspNetCore,但它似乎没有选项来完成这样的任务,或者我错了?
Thanks in advance

bvn4nwqk

bvn4nwqk1#

您可以选择从命令行生成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
我不确定是否可以立即为每个环境生成单独的文件

4nkexdtk

4nkexdtk2#

下面是关于在构建时生成swagger.json文件的a good article
下面是总结
1.在项目的根文件夹中执行以下命令

dotnet new tool-manifest

1.然后执行以下命令

dotnet tool install SwashBuckle.AspNetCore.Cli

1.将以下代码段添加到Web Project(包含swagger NuGet包的项目)的.csproj文件中

<Target Name="CreateSwaggerJson" AfterTargets="Build" Condition="$(Configuration)=='Debug'">
   <Exec Command="dotnet swagger tofile --output ./PATH_WHERE_YOU_WANT/swagger.json $(OutputPath)$(AssemblyName).dll v1" WorkingDirectory="$(ProjectDir)" />
</Target>

用你想要的路径替换PATH_WHERE_YOU_WANT(使用已经存在的文件夹,如果文件夹不存在,这个脚本不会创建文件夹)

7gcisfzg

7gcisfzg3#

简单的方法是使用PowerShell任务来更新json文件并使用另一个名称保存。
简单的工作流程:
1.通过Get-Content脚本读取文件
1.使用ConvertFrom-Json将内容转换为对象
1.将属性值设置为更新对象
1.使用ConvertTo-Json将对象转换为JSON格式的字符串
1.使用Set-Content将内容写入文件
详细代码可以参考这个线程:how do I update json file using powershell
内部版本号值存储在预定义变量中:Build.BuildNumber(PowerShell:$env:BUILD_BUILDNUMBER

相关问题