.NET MAUI 7执行EF Core迁移时MyApp.deps.json缺失问题求助
.NET MAUI 7 EF Core 迁移找不到 deps.json 的解决方案
核心问题原因
MAUI 是多目标框架项目,dotnet ef 命令默认可能选中 iOS/Android 这类移动目标框架,而这类框架的输出结构不满足 EF Core 工具对 deps.json 文件的查找要求,导致报错。
有效解决方案
方案1:执行迁移时指定桌面目标框架
直接在命令中明确指定使用 net7.0 桌面框架(MAUI 项目默认包含该目标),确保 EF Core 工具能找到正确的依赖文件:
dotnet ef migrations add InitialCreate --framework net7.0
注意:执行命令前要切换到 MAUI 项目的根目录,并且先执行 dotnet build --framework net7.0 确保项目已正确构建。
方案2:使用共享类库+控制台项目(推荐,你试过的方法完全可行)
这是社区处理 MAUI + EF Core 迁移的常用稳定方案,步骤如下:
- 新建一个 .NET 7 类库项目,将你的实体模型、
DatabaseContext全部移到这个类库中 - MAUI 项目添加对该类库的引用,确保运行时能正常访问上下文和模型
- 新建一个 .NET 7 控制台项目,同样引用这个类库,在控制台项目的
Program.cs中配置 EF Core 的连接字符串(和 MAUI 中使用的逻辑一致,迁移时可以用本地临时路径,不影响运行时) - 所有迁移命令都在控制台项目根目录执行,生成的迁移文件会保存在类库中,MAUI 项目可直接使用
这种方式彻底避开了 MAUI 多目标框架的限制,后续迁移操作也更顺畅。
方案3:清理重建后重试
先手动删除项目根目录下的 bin 和 obj 文件夹,再依次执行以下命令:
dotnet clean dotnet restore dotnet build --framework net7.0 dotnet ef migrations add InitialCreate --framework net7.0
额外注意点
- 确保你的
DatabaseContext构造函数正确配置了 SQLite 连接,MAUI 运行时用Path.Combine(FileSystem.AppDataDirectory, "your-db-name.db"),迁移时可以用本地路径(比如Data Source=mydb.db),迁移脚本和运行时的数据库路径不冲突 - 确认所有 EF Core 相关 NuGet 包(
Microsoft.EntityFrameworkCore.Sqlite、Microsoft.EntityFrameworkCore.Tools等)在类库/MAUI/控制台项目中的版本一致
内容的提问来源于stack exchange,提问作者OXO
相关产品推荐
相关产品推荐

