M1 Mac执行dotnet ef更新数据库提示找不到.NET Core 2.0.0(arm64)框架
问题原因
- 版本不匹配:你全局安装的dotnet-ef工具默认拉取了依赖.NET Core 2.0运行时的旧版本,而arm64架构的M1芯片设备从未发布过.NET Core 2.0版本的运行时,你本地仅安装了6.0.6版本的.NET运行时,无法满足旧版工具的运行要求。
- 命令指向错误:你的ApplicationDbContext、迁移文件都存放在
BulkyBook.DataAccess目录下,当前命令指定的BulkyBook.Models项目仅存放实体模型定义,没有EF核心配置与迁移逻辑,即使框架问题修复也无法正常执行更新操作。
解决方案
- 先卸载当前版本不兼容的dotnet-ef工具,执行命令:
dotnet tool uninstall dotnet-ef --global
- 安装和本地.NET 6环境匹配的arm64版本dotnet-ef工具,指定版本号为6.x大版本:
dotnet tool install dotnet-ef --global --version 6.* -a arm64
安装完成后执行dotnet ef --version验证,确认输出为6.x版本,不再出现找不到2.0框架的报错即可。
3. 修正数据库更新命令,指定正确的目标项目(存放DbContext和迁移的DataAccess项目),同时指定启动项目(存放数据库连接字符串配置的Web项目),参考命令:
dotnet ef database update --project ~/Documents/learning/bulky/BulkyBook.DataAccess/BulkyBook.DataAccess.csproj --startup-project ~/Documents/learning/bulky/BulkyBookWeb/BulkyBookWeb.csproj
如果之前的迁移文件是在错误的项目路径下生成的,建议先删除错误位置的Migrations文件夹,重新在DataAccess项目下生成迁移后再执行数据库更新,避免路径映射错误。
内容的提问来源于stack exchange,提问作者Vagner Wentz
相关产品推荐
相关产品推荐

