Msbuild 如何在DBContext位于不同程序集中时创建迁移

Msbuild 如何在DBContext位于不同程序集中时创建迁移,msbuild,entity-framework-core,entity-framework-migrations,Msbuild,Entity Framework Core,Entity Framework Migrations,我有NET Core 3.1应用程序,其中我的[模型、dbcontext、应用程序]都在各自的程序集中。我正在尝试为该应用程序发布迁移。我不断收到以下错误: $ dotnet ef migrations add InitialCreate --project DataAccess MSBUILD:错误MSB1009:项目文件不存在。开关: DataAccess无法检索项目元数据。确保它是一个 基于MSBuild的.NET核心项目。如果您使用自定义 BaseMediateOutputPath或

我有
NET Core 3.1
应用程序,其中我的
[模型、dbcontext、应用程序]
都在各自的程序集中。我正在尝试为该应用程序发布迁移。我不断收到以下错误:

$ dotnet ef migrations add InitialCreate --project DataAccess 
MSBUILD:错误MSB1009:项目文件不存在。开关: DataAccess无法检索项目元数据。确保它是一个 基于MSBuild的.NET核心项目。如果您使用自定义 BaseMediateOutputPath或MSBuildProjectExtensionsPath值,请使用 --msbuildprojectextensionspath选项

当前结构

*root
  -App  (.NET Core 3.1)
  -DataAccess  (.NET Standard 2.1)   (Contains the DBContext)
  -Models     (.NET Standard 2.1)   (contains models)
 *root
      -App
      -Migrations (.NET Standard 2.1)
      -DataAccess (.NET Standard 2.1)
      -Models (.NET Standard 2.1)
我还尝试为迁移创建单独的程序集,并在我的
应用程序中使用MigrationAssembly扩展:

services.AddDbContext<[some DBContext]>(x => x.UseSqlServer([some string],x=>x.MigrationsAssembly("Migrations")));
我不明白该如何做。我希望能够进行迁移,理想情况下,我希望将它们保留在自己的程序集中。目前我根本无法进行迁移

p.S
我还尝试将此添加到我的
应用程序
csproj文件中:

<GenerateRuntimeConfigurationFiles>True</GenerateRuntimeConfigurationFiles>
True

几个小时以来,这里的问题完全相同,很高兴知道不是唯一一个疯狂的人

终于解决了: 我在Package Manager控制台中使用的是EFCore.Tools,而不是dotnet Cli:

//添加迁移

Add-Migration *name* -Project *Library project* -StartupProject *StartUp/Web project*
//更新数据库

Update-Database -Project *Library project* -StartupProject *StartUp/Web project* -verbose

我会朝这个方向走。。。玩得开心

几个小时以来,这里的问题完全相同,很高兴知道不是唯一一个疯狂的人

终于解决了: 我在Package Manager控制台中使用的是EFCore.Tools,而不是dotnet Cli:

//添加迁移

Add-Migration *name* -Project *Library project* -StartupProject *StartUp/Web project*
//更新数据库

Update-Database -Project *Library project* -StartupProject *StartUp/Web project* -verbose

我会朝这个方向走。。。玩得开心

经过数天的谷歌搜索,上面@Ajay给出的答案终于对我有用了:

要在--project参数中插入迁移程序集完整路径,请执行以下操作:

dotnet ef migrations add Mymigration --project "c:\repos\myproject\Data" 

…您应该在主启动项目(如c:\repos\myproject\Web)中执行此命令。

经过数天的谷歌搜索,上面@Ajay给出的答案终于对我有用了:

要在--project参数中插入迁移程序集完整路径,请执行以下操作:

dotnet ef migrations add Mymigration --project "c:\repos\myproject\Data" 

…您应该在主启动项目(如c:\repos\myproject\Web)中执行此命令。

在下面相同的项目结构中,此命令对我有效。CLI在App folder App>dotnet ef migrations中打开添加您的_migrationName--project“迁移程序集的绝对路径(c:/root/migrations)”答案如下。在下面相同的项目结构中,命令为我工作。CLI在App folder App>dotnet ef migrations中打开添加您的_migrationName--project“迁移程序集的绝对路径(c:/root/migrations)”答案如下。