EF Core 2执行Add-Migration报错:系统找不到指定文件
解决EF Core 2中
Add-Migration提示“系统找不到指定文件”的问题 我之前也碰到过这个头疼的问题,除了你已经尝试的重启VS、清理重建、重装NuGet包这些常规操作,下面这些针对性的步骤大概率能帮你搞定:
明确指定迁移的目标项目与启动项目
很多时候问题出在默认项目不匹配——EF找不到包含DbContext的项目。执行命令时手动指定项目:Add-Migration InitialCreate -Project 你的数据层项目名 -StartupProject 你的Web/API项目名记得把占位符替换成你实际的项目名称。
检查DbContext的注册与构造函数
确保你的DbContext有正确的构造函数,并且在Startup.cs里完成了服务注册。比如:services.AddDbContext<YourDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));同时核对连接字符串的拼写,别因为少打了字符导致数据库连接异常。
清理损坏的迁移历史
如果之前的迁移文件有损坏,会导致后续命令报错。可以按这个流程操作:- 删除项目中
Migrations文件夹下的所有文件(如果有快照文件可以先备份,或者直接全删) - 打开SQL Server,删除数据库里的
__EFMigrationsHistory表 - 重新执行
Add-Migration命令
- 删除项目中
验证项目的输出路径与引用
右键数据层项目→属性→生成,确认输出路径是默认的bin\Debug\netcoreapp2.x(对应你的.NET Core版本),避免因为输出路径错误导致EF找不到编译后的文件。另外检查项目间的引用是否正常,有没有出现黄色感叹号的无效引用。切换Package Manager Console的默认项目
在VS的Package Manager Console顶部,把“默认项目”下拉框选中包含DbContext的那个项目,而不是启动项目,再执行迁移命令试试。更新EF Core工具版本
工具版本和项目版本不匹配也可能引发这类问题。执行命令更新工具:Update-Package Microsoft.EntityFrameworkCore.Tools如果用.NET CLI的话,可以跑这个命令:
dotnet tool update --global dotnet-ef
内容的提问来源于stack exchange,提问作者Amit Hasan
相关产品推荐
相关产品推荐

