如何使用 ASP.NET Core 2.2 和 Swashbuckle.AspNetCore 5.4.1 针对 .NET Framework 4.8 生成 Swagger 文件
How generate Swagger file with ASP.NET Core 2.2 and Swashbuckle.AspNetCore 5.4.1 targeting .NET Framework 4.8
- 创建一个新的 ASP.NET 以 .NET Framework 4.8 为目标的 Core 2.2 项目
- 跟随'Getting Started'添加Swashbuckle.AspNetCore
这给了这个存储库:
https://github.com/Orwel/GenerateSwaggerFileWithDotnetFramewrok
- 建造
- 进入文件夹 'bin/net48'
- 执行命令:
swagger tofile WebApplication1.exe v1
即显示错误:
A JSON parsing exception occurred in [.\WebApplication1\bin\Debug\net48\WebApplication1.exe]: * Line 1, Column 2 Syntax error: Malformed token
A fatal error was encountered. The library 'hostpolicy.dll' required to execute the application was not found in '.\WebApplication1\bin\Debug\net48\'.
Failed to run as a self-contained app. If this should be a framework-dependent app, add the .\bin\Debug\net48\WebApplication1.json file specifying the appropriate framework.
此错误通常归因于 .NET Core 应用程序加载针对其他运行时的 DLL。
也许 Swashbuckle.AspNetCore.Cli 不能与 .NET Framework 一起使用 API.
如何使用 ASP.NET Core 2.2 和 Swashbuckle.AspNetCore 5.4.1 针对 .NET Framework 4.8 生成 Swagger 文件?
我没有设法从 API 外部的程序生成 swagger 文件。
我修改了生成 swagger.json
文件的 api :
public static class Program
{
public static void Main(string[] args)
{
var webHost = CreateWebHostBuilder(args).Build();
if (args.Length == 1 && args[0] == "generate")
{
var json = webHost.GenerateSwagger("v1", null);
File.WriteAllText("swagger.json", json);
}
else
{
webHost.Run();
}
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
public static string GenerateSwagger(this IWebHost webhost, string docName, string basePath)
{
var sw = webhost.Services.GetRequiredService<ISwaggerProvider>();
var doc = sw.GetSwagger(docName, null, basePath);
using (var streamWriter = new StringWriter())
{
var writer = new OpenApiJsonWriter(streamWriter);
doc.SerializeAsV3(writer);
return streamWriter.ToString();
}
}
}
我接受答案将生成 swagger.json
,而不参考 api 项目。
- 创建一个新的 ASP.NET 以 .NET Framework 4.8 为目标的 Core 2.2 项目
- 跟随'Getting Started'添加Swashbuckle.AspNetCore
这给了这个存储库: https://github.com/Orwel/GenerateSwaggerFileWithDotnetFramewrok
- 建造
- 进入文件夹 'bin/net48'
- 执行命令:
swagger tofile WebApplication1.exe v1
即显示错误:
A JSON parsing exception occurred in [.\WebApplication1\bin\Debug\net48\WebApplication1.exe]: * Line 1, Column 2 Syntax error: Malformed token
A fatal error was encountered. The library 'hostpolicy.dll' required to execute the application was not found in '.\WebApplication1\bin\Debug\net48\'.
Failed to run as a self-contained app. If this should be a framework-dependent app, add the .\bin\Debug\net48\WebApplication1.json file specifying the appropriate framework.
此错误通常归因于 .NET Core 应用程序加载针对其他运行时的 DLL。 也许 Swashbuckle.AspNetCore.Cli 不能与 .NET Framework 一起使用 API.
如何使用 ASP.NET Core 2.2 和 Swashbuckle.AspNetCore 5.4.1 针对 .NET Framework 4.8 生成 Swagger 文件?
我没有设法从 API 外部的程序生成 swagger 文件。
我修改了生成 swagger.json
文件的 api :
public static class Program
{
public static void Main(string[] args)
{
var webHost = CreateWebHostBuilder(args).Build();
if (args.Length == 1 && args[0] == "generate")
{
var json = webHost.GenerateSwagger("v1", null);
File.WriteAllText("swagger.json", json);
}
else
{
webHost.Run();
}
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
public static string GenerateSwagger(this IWebHost webhost, string docName, string basePath)
{
var sw = webhost.Services.GetRequiredService<ISwaggerProvider>();
var doc = sw.GetSwagger(docName, null, basePath);
using (var streamWriter = new StringWriter())
{
var writer = new OpenApiJsonWriter(streamWriter);
doc.SerializeAsV3(writer);
return streamWriter.ToString();
}
}
}
我接受答案将生成 swagger.json
,而不参考 api 项目。