Net Core Add-Migration Build failed.最全解决排查方案

Migration 常用命令
  • Add-Migration Init                           --其中Init是你的版本名称
  • update-database Init                       --更新数据库操作 init为版本名称
  • Add-Migration EditPwdLength       --同上,不在解释
  • update-database EditPwdLength
  • script-migration                               --生成脚本
  • remove-migration                            --删除最新创建的迁移,add-migration后,还没有update-database时候可以使用,updata后不可使用

migration数据迁移非常的简单,大家在学习的时候,如果只有一个项目,实际上迁移是相对非常顺利的,坑是当你在生产环境中,项目越来越多,比如微服务有10几个项目的时候,就会遇到Build failed.的情况;

遇到异常 add-migration Build failed 解决办法
  1. 检查项目是否是启动项(这里有个坑:如果项目使用了DDD,生成要选中Project.Infrastructure,就是我们包含DBContext的类库,而非Project.API 
  2. 检查整个解决方案是否可以编译通过
  3. 上述不行,把其他项目卸载试试
  4. 首先一定要执行dotnet restore 查看网站的依赖关系
  5. 如果生成解决方案出现生成成功,但是编译跳过N个项目这种也不行,要么排除掉该生产失败的项目

遇到 “无法将“Add-Migration”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。”错误的排查思路,说明目前没有找到Microsoft.EntityFrameworkCore.Tools工具包,可以使用以下2种方案来修复:

方案一:

        执行命令一:Import-Module C:\Users\{用户名}\.nuget\packages\microsoft.entityframeworkcore.tools\{core版本}\tools\EntityFrameworkCore.psd1
        执行命令二:Get-Verb
 
方案二:
       Install-Package Microsoft.EntityFrameworkCore.Tools  安装工具包(我喜欢使用这种方案)
 
遇到“Method 'get_Info' in type 'MySql.Data.EntityFrameworkCore.Infraestructure.MySQLOptionsExtension' from assembly 'MySql.Data.EntityFrameworkCore, Version=8.0.18.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' does not have an implementation.”的解决方案
 
目前是因为MySql.Data.EntityFrameworkCore 8.0.18.0驱动包不支持Net Core3.1版本;使用Pomelo.EntityFrameworkCore.MySql即可
posted @ 2020-01-05 14:32  谭洪军  阅读(6454)  评论(0编辑  收藏  举报