我正在尝试在Azure DevOps发布管道上运行迁移。因为我想在每个发行版上自动运行数据库脚本。我的发布管道没有源代码,我只有编译的DLL。
当我在本地计算机上执行此命令时,它成功运行。如何转换此命令,以便可以将其与DLL一起使用。dotnet ef database update --project MyEntityFrameworkProject --context MyDbContext --startup-project MyStartupProject
最佳答案
如果您不想在工件中包含源代码,则可以使用以下脚本:
set rootDir=$(System.DefaultWorkingDirectory)\WebApp\drop\WebApp.Web
set efPath=C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.entityframeworkcore.tools\2.1.1\tools\netcoreapp2.0\any\ef.dll
dotnet exec --depsfile "%rootDir%\WebApp.deps.json" --additionalprobingpath %USERPROFILE%\.nuget\packages --additionalprobingpath "C:\Program Files\dotnet\sdk\NuGetFallbackFolder" --runtimeconfig "%rootDir%\WebApp.runtimeconfig.json" "%efpath%" database update --verbose --prefix-output --assembly "%rootDir%\AssemblyContainingDbContext.dll" --startup-assembly "%rootDir%\AssemblyContainingStartup.dll" --working-dir "%rootDir%"
事实证明,您可以像下面的示例一样使用未记录的dotnet exec命令(假设Web应用程序称为WebApp):
请注意,必须将此运行命令行任务的工作目录(隐藏在“高级”下)设置为工件所在的位置(上述rootDir)。
另一个选项是安装Build & Release Tools扩展并使用“从DLL部署 Entity Framework 核心迁移”任务。
您可以阅读更多信息here,here和here。
关于entity-framework - Entity Framework 迁移Azure DevOps发布管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58390703/