指定的deps.json [C:\ [解决方案] \ [startupproject] \ [startupproject] .deps.json]不存在

时间:2020-02-12 08:55:41

标签: entity-framework-core

在与ASP.Net Core主项目不同的项目中设置EF Core,会导致Add-Migration失败,并显示错误The specified deps.json [C:\[solution]\[startupproject]\[startupproject].deps.json] does not exist

注意:我用[解决方案]替换了根文件夹,用[startupproject]替换了启动项目,并用[databaseproject]替换了数据库项目。

简而言之,我按照here所述设置了3个项目:

  1. ASP.Net Core Web API,这是启动项目([startpproject]
  2. 实体框架核心数据库,包含DbContext([databaseproject]
  3. 模型共享项目([modelsproject]

由于dbcontext与启动项目不在同一个项目中,因此我需要向-StartupProject-Project都添加Add-MigrationUpdate-Database参数。

Add-Migration "Initial" -StartupProject MyWebApiProject -Project MyDatabaseProject
Update-Database -StartupProject MyWebApiProject -Project MyDatabaseProject

Add-Migration给出上述错误。如果我使用Add-Migration参数执行-Verbose,则错误之前的输出为:

C:\ Program Files \ dotnet \ dotnet.exe exec
--depsfile C:\ [解决方案] \ [startupproject] \ [startupproject] .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
迁移会添加初始--json --verbose --no-color --prefix-output
--assembly C:\ [解决方案] \ [startupproject] \ [startupproject] \ [databaseproject] .dll
--startup-assembly C:\ [解决方案] \ [startupproject] \ [startupproject] .dll
--project-dir C:\ [解决方案] \ [数据库项目] \
--language 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:\ [解决方案] \ [模型项目] \ bin \ Debug \ netstandard2.0 [模型项目] .deps.json
C:\ [解决方案] \ [startupproject] \ bin \ Debug \ netcoreapp3.1 [startupproject] .deps.json

没有C:\[solution]\[startupproject]\[startupproject].deps.json。它放在构建输出目录下。

关于deps.json的其他问题(和答案)似乎都没有涵盖这种情况。尽管我有一种解决方法,但它使运行迁移有些麻烦。我添加了解决方法(手动复制文件)作为此问题的答案。

是否有其他(更好的)方法/解决此问题?

2 个答案:

答案 0 :(得分:0)

仅将C:\[solution]\[startupproject]\bin\Debug\netcoreapp3.1\[startupproject].deps.json复制到C:\[solution]\[startupproject]\[startupproject].deps.json并没有帮助,因为缺少[databaseproject] .dll而产生新错误。

但是,将所有文件/文件夹(不覆盖诸如appsettings * .json和property-folder之类的文件)从构建输出C:\[solution]\[startupproject]\bin\Debug\netcoreapp3.1\复制到C:\[solution]\[startupproject]使得Add-Migration和Update-Database都可以正常工作。复制的文件可以并且应该在以后删除。

请注意,必须在Add-Migration之前重建项目,然后在Update-Database之前重新构建项目。

答案 1 :(得分:0)

请从bin / debug / netcorex.x /

复制内容

然后将它们粘贴到项目根文件夹中并应用ef命令。