Once your application has been set up with Swashbuckle (see Getting Started), you can use the Swashbuckle CLI tool to retrieve Swagger/OpenAPI JSON directly from your application's startup assembly, and write it to a file. This can be useful if you want to incorporate Swagger generation into a CI/CD process, or if you want to serve it from static file at run-time.
It's packaged as a .NET Tool that can be installed and used via the .NET SDK.
Warning
The tool needs to load your Startup DLL and its dependencies at runtime. Therefore, you should use a version of the dotnet SDK
that is compatible with your application. For example, if your app targets net8.0, then you should use version 8.0.xxx of the SDK
to run the CLI tool.
To install as a global tool:
dotnet tool install -g Swashbuckle.AspNetCore.Cli
-
In your solution root directory, create a tool manifest file:
dotnet new tool-manifest -
Install as a local tool
dotnet tool install Swashbuckle.AspNetCore.Cli
-
Verify that the tool was installed correctly
swagger tofile --help -
Generate a Swagger/OpenAPI document from your application's startup assembly
swagger tofile --output [output] [startupassembly] [swaggerdoc]Placeholders and their meaning:
[output]: the relative path where the Swagger JSON document will be output to;[startupassembly]: the relative path to your application's startup assembly;[swaggerdoc]: the name of the Swagger document you want to generate, as configured in your application.
By default, the tool will execute in the context of a "default" web host. However, in some cases you may want to bring your own host environment, for example if you've configured a custom DI container such as Autofac. For this scenario, the Swashbuckle CLI tool exposes a convention-based hook for your application.
That is, if your application contains a class that meets either of the following naming conventions, then that class will be used to provide a host for the CLI tool to run in.
public class SwaggerHostFactory, containing a public static method calledCreateHostwith return typeIHostpublic class SwaggerWebHostFactory, containing a public static method calledCreateWebHostwith return typeIWebHost
For example, the following class could be used to leverage the same host configuration as your application:
public class SwaggerHostFactory
{
public static IHost CreateHost()
=> Program.CreateHostBuilder([]).Build();
}