.NET 6添加迁移失败:无法加载DefaultInterpolatedStringHandler类型
问题解决方案
一、解决「无法加载类型'System.Runtime.CompilerServices.DefaultInterpolatedStringHandler'」报错
这个错误核心是项目运行环境或目标框架未匹配.NET 6,按以下步骤排查修复:
- 打开项目文件(
.csproj),确认TargetFramework节点设置为<TargetFramework>net6.0</TargetFramework>,避免使用net5.0或更低版本。 - 检查本地.NET SDK版本:打开命令行执行
dotnet --version,确保版本为6.x及以上,若版本过低,下载安装对应版本SDK即可。 - 清理项目缓存:删除
bin、obj文件夹,执行dotnet restore重新恢复依赖,排除旧版本库的干扰。
二、理清Program.cs与Startup类的关系
.NET 6支持两种启动模式,二者可共存,无需强行修改原有结构:
- 若要保留Startup类,Program.cs应按如下方式调用Startup的配置逻辑,无需把主机创建代码移到Startup中:
var builder = WebApplication.CreateBuilder(args); var startup = new Startup(builder.Configuration); // 调用Startup的服务配置方法 startup.ConfigureServices(builder.Services); var app = builder.Build(); // 调用Startup的管道配置方法 startup.Configure(app, app.Environment); app.Run();
- Startup类的
ConfigureServices方法本身就是用来配置服务的,保留它完全合理;如果想简化写法,也可以把Startup里的逻辑直接迁移到Program.cs的顶级语句中,移除Startup类。
三、重新执行迁移操作
修复上述问题后,进入项目根目录执行命令重新添加迁移:
dotnet ef migrations add YourMigrationName
若仍有问题,可指定项目和数据上下文:
dotnet ef migrations add YourMigrationName --project YourProjectName --context YourDbContextName
内容的提问来源于stack exchange,提问作者Baitshoki Kubu
相关产品推荐
相关产品推荐

