更新Visual Studio 2017至15.5.7后无法执行Add-Migration/Update-Database
我之前也碰到过VS更新后EF迁移命令突然罢工的情况,完全没反馈真的让人头大!给你几个亲测有效的排查和修复步骤:
确认Package Manager Console的默认项目
这是最容易踩的坑!VS更新后,Package Manager Console的默认项目可能会自动切换到解决方案或者其他项目,你一定要确保下拉框里选的是负责生成迁移代码的那个项目(也就是包含DbContext的项目)。清理重建解决方案,清除缓存
先在VS里执行Clean Solution,接着Rebuild Solution。如果还是不行,手动删除迁移项目下的bin和obj文件夹,彻底清除编译残留的缓存文件——这些缓存经常是更新后各种奇怪问题的元凶。重新安装EF相关NuGet包
打开NuGet包管理器,找到你的迁移项目,先卸载Microsoft.EntityFrameworkCore.Tools和对应的Microsoft.EntityFrameworkCore包(注意版本要保持一致),然后重新安装相同版本的包。VS更新可能会导致工具包和EF核心包的版本兼容性问题,重装能解决大部分这类问题。使用完整参数执行迁移命令
别再用简化的Add-Migration命令了,试试带全参数的版本,强制指定上下文和项目,避免VS自动识别出错:Add-Migration [你的迁移名称] -Project [迁移项目名称] -StartupProject [启动项目名称] -Context [你的DbContext类名]把括号里的占位符换成你自己的项目和类名,比如
Add-Migration AddUserTable -Project MyApp.Data -StartupProject MyApp.Web -Context AppDbContext。检查DbContext的配置是否正确
确保你的DbContext类有正确的构造函数,并且在启动项目的Startup.cs(或者Program.cs,.NET 6+)里正确注册了上下文和连接字符串。比如ASP.NET Core里的注册代码:services.AddDbContext<AppDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));连接字符串也要确认是有效的,有时候配置错误不会抛出明显错误,但会导致迁移命令静默失败。
重启VS或重置Package Manager Console
如果以上都没用,试试完全关闭VS再重新打开,或者在Package Manager Console里执行Reset-PackageManagerConsole命令重置控制台环境,有时候VS的控制台进程会因为更新出现异常。
内容的提问来源于stack exchange,提问作者Abubakr A.Hafiz

