任何方式从已发布的应用程序运行dotnet-ef

时间:2018-03-16 17:11:41

标签: c# docker .net-core entity-framework-core

我正在使用与dotnet publish打包在一起的Dotnet Core 2.0 WebApp构建一个docker容器,但以这种方式发布不会复制Microsoft.EntityFrameworkCore.Tools.DotNet中启用dotnet-ef的扩展程序命令。

具体来说,我想在容器中运行dotnet ef命令,但是我收到了这个错误:

No executable found matching command "dotnet-ef"

我的.csproj文件包含这个,所以dotnet-ef在主机上运行良好:

<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />

有没有办法从与dotnet publish一起打包的dotnet应用程序运行迁移?

1 个答案:

答案 0 :(得分:0)

根据@ bricelam的建议和Ben Day's blog entry,这适用于Linux上的dotnet 2.x:

$ dotnet exec \
    --depsfile Api.deps.json \
    /usr/share/dotnet/sdk/NuGetFallbackFolder/microsoft.entityframeworkcore.tools.dotnet/2.0.2/tools/netcoreapp2.0/ef.dll \
    database update \
    --assembly ./MyDllWithMigrations.dll \
    --startup-assembly Api.dll \
    --project-dir . \
    --verbose

(这基于microsoft/aspnetcore-build基本图片。)