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

Visual Studio 2022 EF Core 6.0.6及以下版本Add-Migration报错

故障原因

你遇到的报错和项目本身的EF Core配置无关,属于Visual Studio 2022的NuGet模块加载Bug:包管理器控制台初始化NuGet PowerShell环境时,脚本在非UI线程调用了COM接口枚举逻辑,导致迁移命令依赖的NuGet服务获取失败返回null,最终触发空引用错误。
从你贴出的.csproj配置看,所有EF Core相关包版本统一为6.0.x分支,Design、Tools包的私有资产配置也符合规范,不需要调整包版本或重装项目依赖。

解决方法(按生效概率从高到低排序)

方法1:重启VS后优先初始化包管理器控制台

  • 完全关闭所有Visual Studio窗口,通过任务管理器确认没有残留的devenv.exe进程后结束所有相关进程
  • 重新打开目标项目,不要先打开其他工具窗口、不要加载其他解决方案,也不要先触发其他NuGet相关操作
  • 直接通过菜单栏「工具-NuGet包管理器-包管理器控制台」打开PMC窗口
  • 等控制台加载完成出现PM>提示符、无初始化报错后,直接执行Add-Migration InitialSetup即可

这个方案可以解决绝大多数同类型报错,核心是避免其他插件或功能抢占UI线程,保证NuGet模块初始化时能拿到正确的线程上下文。

方法2:使用dotnet ef命令行绕过PMC的Bug

如果包管理器控制台始终报错,可以完全弃用PMC命令,用.NET CLI执行迁移,不会触发NuGet的PowerShell线程问题:

  • 打开系统终端或者VS开发者命令提示符,切换到.csproj文件所在的项目根目录
  • 首次使用先安装EF全局工具(已经装过可以跳过):
dotnet tool install --global dotnet-ef
  • 执行命令创建初始迁移:
dotnet ef migrations add InitialSetup
  • 后续需要同步数据库时执行:
dotnet ef database update

命令行生成的迁移文件、执行效果和PMC命令完全一致,没有功能差异。

方法3:修复损坏的VS NuGet组件

如果前两种方法无效,大概率是VS安装时NuGet模块文件损坏:

  • 打开Visual Studio Installer,找到对应版本的VS2022,点击「修改」
  • 进入「单个组件」标签页,找到「NuGet包管理器」选项,取消勾选后执行修改,等组件卸载完成后重新勾选安装
  • 也可以直接点击安装器的「更多-修复」选项,对整个VS安装执行完整修复,修复完成后重启系统再测试。

方法4:排查冲突的第三方扩展

部分第三方VS扩展(代码生成插件、主题插件、第三方版本控制工具等)会挂钩NuGet加载流程,破坏线程上下文:

  • 打开VS菜单栏「扩展-管理扩展」,暂时禁用所有非微软官方的第三方扩展
  • 重启VS后测试迁移命令,如果可以正常执行,再逐个启用扩展,定位到引发冲突的扩展后更新到最新版本或者直接卸载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:48:15