.NET Core WebApi从2.1迁移到8.0时Swashbuckle类型加载错误求助
.NET Core 2.1迁移8.0 Swagger TypeLoadException问题解决
问题根源
Swashbuckle.AspNetCore 7.x及以上版本已移除Swashbuckle.AspNetCore.Swagger.Info类型,该类型被替换为Microsoft.OpenApi.Models.OpenApiInfo;同时你安装的包存在冗余,Swashbuckle.AspNetCore已包含Swagger核心、SwaggerGen、SwaggerUI等组件,无需单独安装Swashbuckle和Swashbuckle.AspNetCore.Swagger。
解决步骤
- 卸载冗余NuGet包:移除
Swashbuckle、Swashbuckle.AspNetCore.Swagger,仅保留Swashbuckle.AspNetCore(它会自动管理所需的依赖组件)。 - 替换代码类型引用:将所有
Swashbuckle.AspNetCore.Swagger.Info替换为Microsoft.OpenApi.Models.OpenApiInfo,并确保代码顶部引入命名空间using Microsoft.OpenApi.Models;。 - 更新Swagger配置代码:
旧版配置示例:
修改为新版:services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" }); });services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" }); }); - 清理重建项目:删除项目目录下的
bin和obj文件夹,重新生成项目,确保依赖正确加载。
内容的提问来源于stack exchange,提问作者Sibin
相关产品推荐
相关产品推荐

