【问题标题】:Could not load type 'Swashbuckle.AspNetCore.Swagger.SwaggerDocument' from assembly无法从程序集中加载类型“Swashbuckle.AspNetCore.Swagger.SwaggerDocument”
【发布时间】: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


    【解决方案1】:

    它可能指向不同版本的 CLI。

    尝试以下步骤。

    1. 转到项目根目录
    2. 打开控制台
    3. 创建清单文件

    dotnet new tool-manifest  
    1. 列表项

    安装 5.6.3 CLI

    dotnet tool install --version 5.6.3 Swashbuckle.AspNetCore.Cli
    1. 生成一个大摇大摆的输出文件。 {用您的 ProjectName.dll 替换 Project}

    dotnet swagger tofile --output swagger.json bin/Debug/netcoreapp3.1/Project.dll v1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-05
      • 2011-09-07
      • 2016-09-27
      • 2010-11-30
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 2021-05-30
      相关资源
      最近更新 更多