如何修复.NET 8.0独立WebAssembly应用EF+SQLServer的deps.json不存在错误?
解决Blazor WebAssembly中Add-Migration报错“The specified deps.json [] does not exist”的问题
核心问题本质
Blazor WebAssembly(WASM)纯客户端项目无法直接使用EF Core执行数据库迁移——它运行在浏览器沙箱中,没有访问本地数据库的权限,也不具备EF Core迁移所需的.NET运行时环境。你大概率是混淆了Blazor WASM的项目类型,或者在错误的项目中执行了迁移命令。
分场景解决步骤
场景1:你使用的是Blazor WASM Hosted模式(包含Client、Server、Shared三个项目)
这是带后端API的WASM项目,迁移必须在Server项目中操作:
- 配置连接字符串:在Server项目的
AppSettings.json中添加(如果没有该文件就新建):
不要把连接字符串写在"ConnectionStrings": { "DBConnection": "server=(localdb)\\MSSQLLocalDB;database=EmployeeDB;Trusted_Connection=true" }LaunchSettings.json里,这个文件是用来配置启动参数的,不是存储配置项的地方。 - 配置DbContext:在Server项目的
Program.cs中添加DbContext注册代码:builder.Services.AddDbContext<AppDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DBConnection"))); - 执行迁移命令:
- 打开包管理器控制台,在“默认项目”下拉框中选择Server项目
- 执行命令:
Add-Migration InitialCreate Update-Database
场景2:你使用的是纯Blazor WASM单项目
这种纯客户端项目不能直接操作数据库,需要单独添加ASP.NET Core Web API项目作为后端:
- 新建一个ASP.NET Core Web API项目,将
AppDbContext、连接字符串配置、迁移操作都放在这个API项目中(步骤同场景1的Server项目) - Blazor WASM客户端通过
HttpClient调用API接口来实现数据操作,不要在客户端项目中引入EF Core或执行迁移命令
错误原因说明
你之前在Blazor WASM客户端项目中执行Add-Migration,但客户端项目编译后是运行在浏览器的Wasm代码,没有EF Core迁移所需的.NET运行时依赖环境,因此会出现找不到deps.json的错误——这个文件是.NET Core后端项目的依赖描述文件,客户端WASM项目的结构完全不同。
内容的提问来源于stack exchange,提问作者Phongsak Sukthong
相关产品推荐
相关产品推荐

