【问题标题】:EF Core Code First Deployment - VSTS Pipeline - hospolicy.dllEF Core 代码优先部署 - VSTS 管道 - hospolicy.dll
【发布时间】:2017-10-18 12:49:59
【问题描述】:

我正在使用 asp.net 核心开发一个项目,首先是实体框架代码,我正在尝试运行 EF 迁移作为发布步骤,我被建议使用 migrate.exe,但据我所知 ef asp.net core 不会生成 migrate.exe 文件。

我目前在发布步骤中使用以下命令。将 ef 核心项目的 bin 文件夹添加到生成的工件后。

命令:

dotnet exec 
--runtimeconfig ./HOST.runtimeconfig.json 
--depsfile ./HOST.deps.json Microsoft.EntityFrameworkCore.Design.dll
--assembly ./DB_CONTEXT_DLL.dll 
--startup-assembly ./HOST.dll --data-dir ./ 
--root-namespace DB_CONTEXT_NAMESPACE 
--verbose database update --context DB_CONTEXT_CLASS -e development 

命令步骤失败并出现以下错误: 遇到致命错误。在 'd:\a\r1\a{Publish articats folder}\drop\EF\bin\release\netcoreapp1.1\' 中找不到执行应用程序所需的库 'hostpolicy.dll'。

我不确定什么是 hostpolicy.dll 以及如何生成它,因为它不是在 EF 核心项目的 bin 文件夹中生成的

有什么建议吗?

【问题讨论】:

  • 关于命令问题,我想知道它是VS2015还是VS 2017核心项目,你能在本地机器上运行那个命令吗?能否在 OneDrive 上分享详细的 VSTS 构建日志(将 system.debug 变量设置为 true,然后排队构建并共享日志文件)?

标签: asp.net-core azure-devops entity-framework-core


【解决方案1】:

您可以在部署过程中进行实体框架迁移。简单的步骤:

  1. 创建发布配置文件(例如,Web 部署包,右键单击项目=>发布)
  2. 通过 Visual Studio 构建任务 使用 /p:DeployOnBuild=true /p:PublishProfile=[profilename];DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\WebAppCoreEF.zip" 参数进行常规部署包
  3. 添加部署任务(例如 Azure App Service Deploy)来部署这个包(你可以在发布时这样做)

【讨论】:

  • 这不会考虑在 Azure App Service Deploy 任务中转换的任何连接字符串更改,对吗?
  • @JeremyHolovacs 不清楚你的意思,你能提供样本解释一下吗?
  • 如果您需要将配置转换为部署的一部分,并且您的数据库迁移发生在部署之前,您不会迁移错误的数据库吗?
  • @JeremyHolovacs 不,您可以为此问题打开一个新线程。
猜你喜欢
  • 2012-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 2019-10-23
  • 2020-12-31
  • 1970-01-01
  • 2014-08-21
相关资源
最近更新 更多