【问题标题】:The specified deps.json [C:\[solution]\[startupproject]\[startupproject].deps.json] does not exist指定的deps.json [C:\[solution]\[startupproject]\[startupproject].deps.json] 不存在
【发布时间】: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 个项目:

  1. ASP.Net Core web api,这是启动项目([startpproject])
  2. Entity Framework Core 数据库,包含 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 给出上述错误。如果我使用-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 的其他问题(和答案)似乎都没有涵盖这种情况。虽然我有一个解决方法,但它使运行迁移有点繁琐。我已添加解决方法(手动复制文件)作为此问题的答案。

还有其他(更好的)方法/解决这个问题吗?

【问题讨论】:

    标签: entity-framework-core


    【解决方案1】:

    请从 bin/debug/netcorex.x/ 复制内容

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

    【讨论】:

      【解决方案2】:

      仅将 C:\[solution]\[startupproject]\bin\Debug\netcoreapp3.1\[startupproject].deps.json 复制到 C:\[solution]\[startupproject]\[startupproject].deps.json 没有帮助,会出现缺少 [databaseproject].dll 的新错误。

      但是,将构建输出 C:\[solution]\[startupproject]\bin\Debug\netcoreapp3.1\ 中的所有文件/文件夹(不覆盖 appsettings*.json 和属性文件夹等任何内容)复制到 C:\[solution]\[startupproject] 后,Add-Migration 和 Update-Database 都可以正常工作。复制的文件可以并且应该在之后删除。

      请注意,项目必须在Add-Migration之前重建,并在Update-Database之前再次重建。

      【讨论】:

      • 这是一种解决方法,谢谢。但我不明白为什么 dotnet 在根文件夹中寻找 deps.json 文件。我们有两台机器克隆了相同的存储库。一个工作正常,另一个也有同样的问题。它始于 .NET Core 5。
      猜你喜欢
      • 2017-05-26
      • 2019-11-11
      • 2019-10-23
      • 2023-02-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      相关资源
      最近更新 更多