You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EF Migration Bundle未打包迁移:Azure DevOps部署问题排查

解决Azure DevOps中EF Migration Bundle未正确包含迁移的问题
  • 盯准生成Bundle的命令参数
    生成bundle时必须指定EF项目和启动项目(如果EF项目不是启动项目的话),命令格式得是这样:
    dotnet ef migrations bundle --project ./YourEfProject/YourEfProject.csproj --startup-project ./YourWebProject/YourWebProject.csproj --configuration Release
    一定要加--configuration Release,别用Debug配置生成,不然迁移可能没被正确编译进去。

  • 对齐本地和流水线的EF工具版本
    本地IDE用的EF Core工具版本要和流水线里安装的完全一致,比如本地是7.0.12,流水线里就执行这个命令装同版本:
    dotnet tool install --global dotnet-ef --version 7.0.12
    版本不匹配的话,生成的bundle根本认不出本地创建的迁移。

  • 检查迁移文件有没有被流水线打包漏掉
    EF的迁移快照文件(比如YourDbContextModelSnapshot.cs)必须包含在编译输出里,去EF项目的.csproj里确认没排除这些文件:

    <ItemGroup>
      <Compile Include="Migrations\**" />
      <Compile Include="YourDbContextModelSnapshot.cs" />
    </ItemGroup>
    

    流水线打包EF项目时,得确保迁移文件被正确复制到输出目录,别被忽略了。

  • 流水线里加一步迁移列表验证
    生成bundle前,先执行dotnet ef migrations list --project ./YourEfProject/YourEfProject.csproj --startup-project ./YourWebProject/YourWebProject.csproj,看看输出的迁移列表里有没有AddedEmailToInvitationTable。要是没有,说明流水线环境没正确加载到迁移,得检查项目路径或者依赖配置。

  • 生产环境执行bundle的正确姿势
    别直接跑bundle.exe,得指定生产库的连接字符串:
    bundle.exe --connection "Server=你的生产服务器;Database=你的生产库;User Id=xxx;Password=xxx;"
    如果要指定特定迁移,得和dotnet ef migrations list输出的名称完全一致,大小写空格都不能错,比如迁移名是AddedEmailToInvitationTable,就执行bundle.exe --connection "xxx" --target AddedEmailToInvitationTable

内容的提问来源于stack exchange,提问作者Adrian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 15:52:38