【发布时间】:2020-05-27 18:45:54
【问题描述】:
在与主 ASP.Net Core 项目不同的项目中设置 EF Core 会导致 Add-Migration 失败并出现错误 The specified deps.json [C:\[solution]\[startupproject]\[startupproject].deps.json] does not exist。
注意:我已将根文件夹替换为 [Solution],将启动项目替换为 [startupproject],将数据库项目替换为 [databaseproject]。
简而言之,我按照here 的描述设置了 3 个项目:
- ASP.Net Core web api,这是启动项目(
[startpproject]) - Entity Framework Core 数据库,包含 DbContext (
[databaseproject]) - 模型共享项目 (
[modelsproject])
由于 dbcontext 与启动项目位于不同的项目中,我需要将 -StartupProject 和 -Project 参数添加到 Add-Migration 和 Update-Database。
Add-Migration "Initial" -StartupProject MyWebApiProject -Project MyDatabaseProject
Update-Database -StartupProject MyWebApiProject -Project MyDatabaseProject
Add-Migration 给出上述错误。如果我使用-Verbose 参数执行Add-Migration,则错误前的输出为:
C:\Program Files\dotnet\dotnet.exe 执行
--depsfile C:\[解决方案]\[启动项目]\[启动项目].deps.json
--additionalprobingpath C:\Users\xx.nuget\packages
--additionalprobingpath "C:\Program Files\dotnet\sdk\NuGetFallbackFolder"
C:\Users\xx.nuget\packages\microsoft.entityframeworkcore.tools\3.1.1\tools\netcoreapp2.0\any\ef.dll
迁移添加 Initial --json --verbose --no-color --prefix-output
--程序集 C:\[解决方案]\[startupproject]\[startupproject]\[databaseproject].dll
--startup-assembly C:\[solution]\[startupproject]\[startupproject].dll
--project-dir C:\[解决方案]\[数据库项目]\
--语言 C#
--working-dir C:\[解决方案]
--root-namespace [数据库项目]
这里的主要内容是--depsfile C:\[solution]\[startupproject]\[startupproject].deps.json。
在解决方案中寻找 deps.json:gci *.deps.json -r | select -prop FullName
全名
C:\[解决方案]\[数据库项目]\bin\Debug\netstandard2.0\DNB.BI.AAC.DataVault.Database.deps.json
C:\[解决方案]\[modelsproject]\bin\Debug\netstandard2.0[modelsproject].deps.json
C:\[解决方案]\[startupproject]\bin\Debug\netcoreapp3.1[startupproject].deps.json
没有C:\[solution]\[startupproject]\[startupproject].deps.json。它放在构建输出目录下。
关于 deps.json 的其他问题(和答案)似乎都没有涵盖这种情况。虽然我有一个解决方法,但它使运行迁移有点繁琐。我已添加解决方法(手动复制文件)作为此问题的答案。
还有其他(更好的)方法/解决这个问题吗?
【问题讨论】: