使用VSTS版本定义运行实体框架代码数据库迁移

时间:2017-04-06 15:55:21

标签: azure ef-migrations azure-pipelines-release-pipeline

我正在使用代码优先迁移编写.NET Core和Entity Framework核心应用程序。

我希望能够使用Visual Studio Team Services构建和发布定义将其部署到Azure Web App

我希望能够使用脚本

将数据库迁移作为发布定义的一部分运行
dotnet ef database update

我是通过发布定义

中的命令提示符操作完成的

但是我总是收到消息

No executable found matching command "dotnet-ef"

我已经尝试确保此命令与.cproj文件在同一目录中运行

我也尝试过运行

dotnet restore 

作为上一个命令提示符任务,这会产生错误

The folder 'C:\a\r1\a\Drop\s\src\xxxxx' does not contain a project to restore even though it does.

是否有人尝试过代码优先迁移作为团队服务发布定义步骤的一部分?

我的另一个选择是将迁移作为Web应用程序本身的一部分运行,但我想通过Release进程运行它,而不是在Application中运行它。

1 个答案:

答案 0 :(得分:2)

您需要使用托管VS2017 代理,而不是托管代理。我的步骤:

  1. 编辑csproj文件以在下方添加此代码并检入更改(请参阅.NET Command Line Tools文章)
  2. 代码:

    <ItemGroup>
        <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1" PrivateAssets="All" />
      </ItemGroup>
      <ItemGroup>
        <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
      </ItemGroup>
    
    1. 命令行步骤/任务(工具:dotnet;参数:--version
    2. 命令行步骤/任务(工具:dotnet;参数:restore
    3. 命令行步骤/任务(工具:dotnet;参数:ef --version
    4. 使用托管VS2017 代理构建队列。