Mac环境下ASP.NET Core 2.1使用dotnet-ef时遇命令未找到及工具恢复失败问题求助
解决方案
我来帮你一步步搞定这个Mac上dotnet-ef的问题,分两个核心环节处理:
一、解决zsh: command not found: dotnet-ef的问题
虽然系统提示dotnet-ef已经安装,但zsh可能没把dotnet全局工具的路径加入环境变量,按下面步骤操作:
- 打开终端,编辑zsh的配置文件:
open -e ~/.zshrc - 在文件末尾添加一行,把dotnet工具的默认路径加入环境变量:
export PATH="$PATH:$HOME/.dotnet/tools" - 保存文件后,让配置立即生效:
source ~/.zshrc - 现在测试一下,执行
dotnet-ef --version,如果能显示版本信息,说明路径问题解决了。
如果这一步还是不行,大概率是你安装的dotnet-ef版本(3.1.1)和ASP.NET Core 2.1 SDK不兼容——dotnet-ef的版本需要和SDK版本对应,2.1 SDK应该搭配2.1.x的dotnet-ef,这时候我们可以直接安装匹配版本的工具,同时解决后面的签名问题。
二、解决NU3037签名过期导致的恢复失败问题
这个错误是因为nuget.org上的dotnet-ef 3.1.1包签名有效期过期了,我们可以通过以下两种方式解决:
方式1:安装和ASP.NET Core 2.1匹配的dotnet-ef版本
直接指定2.1.x版本安装,避开签名过期的3.1.1包:
dotnet tool install --global dotnet-ef --version 2.1.11
安装完成后,再执行dotnet-ef database update --project XXXX.XXXX应该就能正常运行了。
方式2:临时禁用NuGet签名验证(仅临时应急用)
如果你确实需要使用3.1.1版本,可以临时关闭签名验证来完成恢复:
- 在项目根目录创建一个
nuget.config文件,内容如下:<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> </packageSources> <packageValidation> <allowSignaturesUntrusted>true</allowSignaturesUntrusted> </packageValidation> </configuration> - 执行恢复命令:
dotnet tool restore --configfile nuget.config - 恢复完成后,记得删除这个临时的
nuget.config,避免影响其他包的安全性。
额外排查:清理NuGet缓存
如果上面的方法都不行,试试清理本地NuGet缓存,删除过期的包文件:
rm -rf ~/.nuget/packages/dotnet-ef
然后重新安装对应版本的dotnet-ef即可。
内容的提问来源于stack exchange,提问作者San Jaisy
相关产品推荐
相关产品推荐

