在与ASP.Net Core主项目不同的项目中设置EF Core,会导致Add-Migration失败,并显示错误The specified deps.json [C:\[solution]\[startupproject]\[startupproject].deps.json] does not exist
。
注意:我用[解决方案]替换了根文件夹,用[startupproject]替换了启动项目,并用[databaseproject]替换了数据库项目。
简而言之,我按照here所述设置了3个项目:
[startpproject]
)[databaseproject]
)[modelsproject]
)由于dbcontext与启动项目不在同一个项目中,因此我需要向-StartupProject
和-Project
都添加Add-Migration
和Update-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的其他问题(和答案)似乎都没有涵盖这种情况。尽管我有一种解决方法,但它使运行迁移有些麻烦。我添加了解决方法(手动复制文件)作为此问题的答案。
是否有其他(更好的)方法/解决此问题?
答案 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命令。