.NET Core 2.2项目创建EF迁移时遇System.IO.FileNotFoundException错误
解决.NET Core 2.2 EF迁移时的FileNotFoundException问题
你遇到的核心问题是EF迁移工具找不到名为myproject的程序集,而你的启动项目是myproject-api。结合你的配置细节,我整理了几个针对性的解决方案:
1. 检查DbContext所在项目的引用关系
如果你的DbContext是放在单独的myproject类库项目中(而非直接在myproject-api项目内),那你必须确保myproject-api已经添加了对myproject的项目引用。从你提供的csproj来看,目前只有NuGet包引用,缺少关键的项目引用,这会导致EF无法定位到包含DbContext的程序集。
添加项目引用的两种方式:
- 在Visual Studio中右键点击
myproject-api项目 → 选择「添加」→「项目引用」,勾选myproject项目即可。 - 手动编辑
myproject-api.csproj,在任意<ItemGroup>节点中添加:<ProjectReference Include="..\myproject\myproject.csproj" />
2. 运行EF命令时明确指定项目参数
如果DbContext所在项目和启动项目分离,直接执行dotnet ef命令可能会出现定位错误。你需要在命令中明确指定两个关键参数:
dotnet ef migrations add init --project ../myproject --startup-project ./myproject-api --verbose
--project:指定包含DbContext的类库项目路径--startup-project:指定你的WebAPI启动项目路径
3. 清理编译缓存并重建解决方案
有时候编译生成的bin/obj文件夹会存在缓存问题,导致EF工具无法读取最新的程序集。可以按以下步骤操作:
- 删除
myproject-api和myproject项目下的bin、obj文件夹 - 运行
dotnet restore恢复项目依赖 - 运行
dotnet build重新编译整个解决方案 - 再次尝试执行迁移命令
4. 验证DbContext的配置(可选)
确保你的Startup.cs中正确配置了DbContext,比如在ConfigureServices方法中有类似代码:
services.AddDbContext<YourDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
同时确认appsettings.json中配置了有效的数据库连接字符串。
内容的提问来源于stack exchange,提问作者Robbie Mills
相关产品推荐
相关产品推荐

