VSTS 中完整 .net 项目中的 Ef 核心迁移

Ef core migrations in full .net project in VSTS

我创建了一个针对完整 .net 框架的 .net 核心网络应用程序

我已经创建了一个 class 库(.net 框架) 在这个 dll 中,我引用了 ef core 并创建了一个上下文。 当我使用包管理器时迁移工作。

我目前面临的问题 我需要能够在 VSTS 部署期间使用迁移。

我试过了 在 VSTS 中创建一个 powershell 部署脚本来调用 dotnet-ef 命令。这不起作用,因为我无法在我的项目中安装 Microsoft.EntityFrameworkCore.Tools.DotNet

我尝试在我的 .csproj 中手动添加引用 Manual update .csproj

但不幸的是,这并不能解决我的问题,只能产生这样的结果。 Faulty reference

免责声明:我没有测试过以下任何建议。

其他人正在使用此解决方法:

ASP.NET Core 的另一种解决方法是添加命令行参数 (Program.cs) 以允许从命令行执行 .Database.Migrate()。然后您可以添加 VSTS 部署任务,该任务使用此命令行参数在 azure 上执行 powershell command/script。

另一种方法可能是让您的 CI 将带有 EF Core tools reference 的项目文件 (*.csproj) 放入工件中,然后在 CD 中执行 dotnet 恢复。项目文件似乎是必需的,因为这是我可以看到您可以指示 dotnet 工具恢复什么的唯一方式。

我意识到这是一个老问题,但对于正在寻找在 Azure DevOps(又名 VSTS)中处理 EF 迁移的最佳方法的其他人来说,这是我的发现。

EF 迁移构建源代码,这可能会出现问题,因为您需要源代码,而发布管道并不具有构建管道所具有的所有相同构建功能。

我的方法是:

  1. 使用 dotnet ef 命令在构建中生成迁移脚本。
  2. 将脚本发布为构建的工件。
  3. 运行 发布管道中部署期间的脚本。

查看完整博客 post 了解更多详情 here