.NET Core 2.1迁移至.NET 8.0时遇Swashbuckle类型加载异常求助
解决.NET 8迁移中Swashbuckle的TypeLoadException问题
这个错误是因为Swashbuckle.AspNetCore 5.x及以上版本移除了Swashbuckle.AspNetCore.Swagger.Info类型,改用官方标准的Microsoft.OpenApi.Models.OpenApiInfo替代。以下是具体修复步骤:
替换代码中的旧类型
找到配置Swagger的代码(通常在Startup.cs或Program.cs),把所有Info相关的引用替换为OpenApiInfo:
原来的代码:using Swashbuckle.AspNetCore.Swagger; // ... services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1", Description = "API description", Contact = new Contact { Name = "Team", Email = "team@example.com" } }); });修改后:
using Microsoft.OpenApi.Models; // ... services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1", Description = "API description", Contact = new OpenApiContact { Name = "Team", Email = "team@example.com" } }); });统一Swashbuckle包版本
确保所有Swashbuckle相关NuGet包(Swashbuckle.AspNetCore、Swashbuckle.AspNetCore.SwaggerGen、Swashbuckle.AspNetCore.SwaggerUI)的版本一致,建议升级到适配.NET 8的最新稳定版。检查其他旧API引用
如果代码中还用到了Swashbuckle.AspNetCore.Swagger下的其他类型(比如Contact、License),同样替换为Microsoft.OpenApi.Models命名空间下的对应类型(OpenApiContact、OpenApiLicense等)。清理并重建项目
删除项目的bin和obj目录,执行dotnet clean和dotnet build命令,确保没有旧的编译缓存残留。
内容的提问来源于stack exchange,提问作者Sibin
相关产品推荐
相关产品推荐

