【发布时间】:2020-10-13 19:40:17
【问题描述】:
目前我正在尝试将项目从 dotnet 2.1 更新到 3.1。为了做到这一点并避免异常,我不得不升级 swagger,一切正常,除了 swagger。由于某些未知原因,当我尝试生成它的 json 映射时,Swagger 返回此异常。我正在 Catalina macOs、macBook Pro 中进行这些更改。
The command "dotnet swagger tofile --output .\autogenerated-api.json bin/Debug/netcoreapp3.1/App.dll v2" exited with code 134.
...
Unhandled exception. System.TypeLoadException: Could not load type 'Swashbuckle.AspNetCore.Swagger.SwaggerDocument' from assembly 'Swashbuckle.AspNetCore.Swagger, Version=5.6.3.0, Culture=neutral, PublicKeyToken=62657d7474907593'.
at Swashbuckle.AspNetCore.Cli.Program.<>c.<Main>b__0_3(IDictionary`2 namedArgs)
at Swashbuckle.AspNetCore.Cli.CommandRunner.Run(IEnumerable`1 args)
at Swashbuckle.AspNetCore.Cli.CommandRunner.Run(IEnumerable`1 args)
at Swashbuckle.AspNetCore.Cli.Program.Main(String[] args)
到目前为止,我还没有找到任何关于该异常的具体信息。怎么了?。我正在使用最新的 Swagger 以及非常简单的设置:
<PackageReference Include="Swashbuckle.AspNetCore.Swagger" Version="5.6.3" />
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="5.6.3" />
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="5.6.3" />
...
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="dotnet swagger tofile --output .\autogenerated-api.json $(OutputPath)$(AssemblyName).dll v2" />
还有 Startup.cs 中的设置:
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v2", new OpenApiInfo { Title = "App Api", Version = "v2"});
});
...
if (env.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v2/swagger.json", $"{nameof(App)} API V2");
c.InjectStylesheet("/brand.css");
});
}
这个想法自然是在每次开发运行时生成一个 json 映射。仍然想知道为什么 Swagger 试图访问它没有的包 (SwaggerDocument)。
谢谢。
【问题讨论】:
标签: c# .net-core swashbuckle.aspnetcore