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

Tim*_*ing 7 azure ef-migrations azure-pipelines-release-pipeline

我正在使用代码优先迁移编写.NET核心和实体框架核心应用程序.

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

我希望能够使用脚本将数据库迁移作为发行定义的一部分运行

dotnet ef database update
Run Code Online (Sandbox Code Playgroud)

我通过发布定义中的命令提示符操作完成了此操作

但是我总是收到消息

No executable found matching command "dotnet-ef"
Run Code Online (Sandbox Code Playgroud)

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

我也试过跑一个

dotnet restore 
Run Code Online (Sandbox Code Playgroud)

作为以前的命令提示符任务,这会产生错误

The folder 'C:\a\r1\a\Drop\s\src\xxxxx' does not contain a project to restore even though it does.
Run Code Online (Sandbox Code Playgroud)

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

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

sta*_*SFT 2

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

  1. 编辑 csproj 文件以添加以下代码并签入更改(请参阅.NET 命令行工具文章)

代码:

<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>
Run Code Online (Sandbox Code Playgroud)
  1. 命令行步骤/任务(工具:dotnet;参数--version:)
  2. 命令行步骤/任务(工具:dotnet;参数restore:)
  3. 命令行步骤/任务(工具:dotnet;参数ef --version:)
  4. 使用托管 VS2017代理构建队列。