You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Swashbuckle如何将生成的swagger.json存储到代码仓库?

实现Swashbuckle自动保存swagger.json到项目目录的方法

完全可以实现,以下是两种常用的实现方案:

方案一:项目启动运行时自动导出(最贴合你的需求)

适合每次运行项目时自动生成最新的swagger.json文件,步骤如下:

  • 确认你已经安装了Swashbuckle.AspNetCore NuGet包,这是生成Swagger文档的基础依赖
  • 在项目启动代码中添加导出逻辑,.NET 6+ 版本的Minimal API在Program.cs中添加如下代码:
var builder = WebApplication.CreateBuilder(args);

// 你原本的Swagger配置
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// ========== 添加导出swagger.json的逻辑 ==========
if (app.Environment.IsDevelopment()) // 你也可以去掉判断,所有环境都导出
{
    using var scope = app.Services.CreateScope();
    var swaggerProvider = scope.ServiceProvider.GetRequiredService<ISwaggerProvider>();
    var swaggerDoc = swaggerProvider.GetSwagger("v1"); // 这里的v1要和你AddSwaggerGen里配置的版本号一致
    
    // 配置导出路径,示例是导出到项目根目录的docs文件夹下,../../../是从bin目录回退到项目根目录
    var outputPath = Path.Combine(AppContext.BaseDirectory, "../../../docs/swagger.json");
    var directory = Path.GetDirectoryName(outputPath);
    if (!Directory.Exists(directory))
    {
        Directory.CreateDirectory(directory);
    }
    
    // 序列化并写入文件
    using var streamWriter = new StreamWriter(outputPath);
    var jsonWriter = new OpenApiJsonWriter(streamWriter);
    swaggerDoc.SerializeAsV3(jsonWriter); // 如果用的是OpenApi V2版本就用SerializeAsV2
}
// ========== 导出逻辑结束 ==========

// 你原本的中间件配置
app.UseSwagger();
app.UseSwaggerUI();

// 其他中间件和路由配置...

app.Run();

需要引入Microsoft.OpenApi.Writers和Swashbuckle.AspNetCore.Swagger命名空间,否则会出现编译错误

  • 配置完成后每次运行项目,就会自动把最新的swagger.json写入你指定的路径,你可以把这个路径的文件直接纳入Git仓库管理即可

方案二:构建时自动导出(无需运行项目)

如果你不需要每次启动都生成,希望构建项目时自动导出,可以用Swashbuckle官方提供的CLI工具实现:

  • 安装CLI工具:dotnet tool install --global Swashbuckle.AspNetCore.Cli
  • 在项目的属性->构建事件->后构建事件中添加如下命令:
swagger tofile --output docs/swagger.json $(TargetPath) v1
  • 之后每次执行dotnet build时都会自动生成最新的swagger.json到指定路径

注意事项

  • 导出时指定的版本号v1必须和你Swagger配置中的文档版本完全一致,否则会导出失败
  • 如果你的项目有多个Swagger文档版本,需要为每个版本单独执行导出逻辑
  • 要确保导出路径的读写权限正常,避免写入失败

内容的提问来源于stack exchange,提问作者DaveVentura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:48:01