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

Mac环境下ASP.NET Core 2.1使用dotnet-ef时遇命令未找到及工具恢复失败问题求助

解决方案

我来帮你一步步搞定这个Mac上dotnet-ef的问题,分两个核心环节处理:

一、解决zsh: command not found: dotnet-ef的问题

虽然系统提示dotnet-ef已经安装,但zsh可能没把dotnet全局工具的路径加入环境变量,按下面步骤操作:

  1. 打开终端,编辑zsh的配置文件:
    open -e ~/.zshrc
    
  2. 在文件末尾添加一行,把dotnet工具的默认路径加入环境变量:
    export PATH="$PATH:$HOME/.dotnet/tools"
    
  3. 保存文件后,让配置立即生效:
    source ~/.zshrc
    
  4. 现在测试一下,执行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版本,可以临时关闭签名验证来完成恢复:

  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>
    
  2. 执行恢复命令:
    dotnet tool restore --configfile nuget.config
    
  3. 恢复完成后,记得删除这个临时的nuget.config,避免影响其他包的安全性。

额外排查:清理NuGet缓存

如果上面的方法都不行,试试清理本地NuGet缓存,删除过期的包文件:

rm -rf ~/.nuget/packages/dotnet-ef

然后重新安装对应版本的dotnet-ef即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 01:27:43