ASP.NET Core添加EF API控制器时报错且自动降级EF Core SqlServer包
问题原因
这个是Visual Studio 2019 16.11.3版本的已知Bug,核心原因是该版本内置的EF Core控制器代码生成器的依赖硬编码绑定了Microsoft.EntityFrameworkCore.SqlServer和Microsoft.EntityFrameworkCore.Tools的5.0.9版本,当你项目中安装的这两个包版本高于5.0.9(比如你用到的5.0.10)时,代码生成器运行时会强制要求加载对应版本的程序集,找不到就会抛出你遇到的报错。
当首次生成控制器失败后,VS的代码生成器会自动触发兼容修复逻辑,将这两个EF Core包降级到它内置支持的5.0.9版本,版本匹配后代码生成器就能正常运行。
解决方案
- 临时适配:保持
Microsoft.EntityFrameworkCore.SqlServer和Microsoft.EntityFrameworkCore.Tools为5.0.9版本即可正常使用可视化添加控制器功能,无需其他修改。 - 版本升级:将Visual Studio 2019升级到16.11.10及以上的更新版本,微软已经在后续补丁中修复了这个依赖版本绑定错误,升级后即可正常使用最新版的EF Core 5.x包。
- 替代方案:如果需要使用更高版本的EF Core且不想升级VS,可以放弃可视化添加控制器操作,手动编写控制器CRUD逻辑,或是使用
dotnet aspnet-codegenerator命令行工具执行脚手架生成,命令行工具不受VS内置生成器的版本限制。
内容的提问来源于stack exchange,提问作者Ogglas
相关产品推荐
相关产品推荐

