C# 找不到命令';dotnet ef';

C# 找不到命令';dotnet ef';,c#,entity-framework,asp.net-core,.net-core,csproj,C#,Entity Framework,Asp.net Core,.net Core,Csproj,我在/Visual Studio代码上使用.NET Core 2.0,并试图让工具正常工作,但我不断收到错误: 找不到命令dotnet ef 我几乎到处都找过了,所有的建议都不管用 运行“dotnet ef”的结果: [wasiim@wasiim-PC WebApiServerApp]$dotnet ef--帮助 找不到命令“dotnet ef”,请运行以下命令进行安装 dotnet工具安装--全局dotnet ef [wasiim@wasiim-PC WebApiServerApp]$dotn

我在/Visual Studio代码上使用.NET Core 2.0,并试图让工具正常工作,但我不断收到错误:

找不到命令dotnet ef

我几乎到处都找过了,所有的建议都不管用

运行“dotnet ef”的结果:

[wasiim@wasiim-PC WebApiServerApp]$dotnet ef--帮助
找不到命令“dotnet ef”,请运行以下命令进行安装
dotnet工具安装--全局dotnet ef
[wasiim@wasiim-PC WebApiServerApp]$dotnet工具列表-g
包Id版本命令
---------------------------------------------------
dotnet开发人员证书2.2.0 dotnet开发人员证书
dotnet ef 2.2.3 dotnet ef
[wasiim@wasiim-PC网络应用程序]$
这是“dotnet--info”结果,如果有帮助:

[wasiim@wasiim-PC WebApiServerApp]$dotnet--信息
.NET核心SDK(反映任何全局.json):
版本:2.2.105
提交:7cecb35b92
运行时环境:
操作系统名称:arch
操作系统版本:
操作系统平台:Linux
RID:arch-x64
基本路径:/opt/dotnet/sdk/2.2.105/
主机(用于支持):
版本:2.2.3
提交:6b8ad509b6
已安装.NET核心SDK:
2.2.105[/opt/dotnet/sdk]
已安装.NET核心运行时:
Microsoft.NETCore.App 2.2.3[/opt/dotnet/shared/Microsoft.NETCore.App]
要安装其他.NET核心运行时或SDK,请执行以下操作:
https://aka.ms/dotnet-download
这是我的.csproj文件:


netcoreapp2.2

有时,当您安装新版本的
dotnet
sdk时,它会点击
路径

您必须手动将文件夹
.dotnet/tools
主目录添加到
路径


读者注意:如果您尚未安装
dotnet ef
,则需要先安装它:
dotnet工具安装--global dotnet ef
。提问者已经这样做了。你需要先这样做,然后这个答案的其余部分才能有所帮助

如何解决这个问题 对于LinuxmacOS,在shell配置中添加一行:

  • bash
    /
    zsh

    export PATH="$PATH:$HOME/.dotnet/tools/"
    
    set path = ($path $HOME/.dotnet/tools/)
    
  • csh
    /
    tcsh

    export PATH="$PATH:$HOME/.dotnet/tools/"
    
    set path = ($path $HOME/.dotnet/tools/)
    
启动新外壳/终端时(或下次登录时)
dotnet ef
应该可以工作

对于窗口

有关如何添加到
路径
环境变量的信息,请参见

您需要将
%USERPROFILE%\.dotnet\tools
添加到
路径

发生什么事? 此故障的.NET Core 3.0(预览版)版本更具启发性:

$ dotnet ef
Could not execute because the specified command or file was not found.
Possible reasons for this include:
  * You misspelled a built-in dotnet command.
  * You intended to execute a .NET Core program, but dotnet-ef does not exist.
  * You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.
第二个和第三个都是指试图查找
dotnet ef
命令但找不到该命令的
dotnet
。正如第三点所说,
dotnet ef
不在您的路径中

这是:

全局工具可以安装在默认目录或特定位置。默认目录为:

OS路径

Linux/macOS$HOME/.dotnet/tools

Windows%USERPROFILE%\.dotnet\tools

因此,您应该将
$HOME/.dotnet/tools/
添加到
$PATH

但也要注意文档中的这一部分:

这些位置在SDK首次运行时添加到用户路径中,因此可以直接调用安装在那里的全局工具


所以,听起来好像出了什么问题。如果您使用手动tarball安装,SDK就会出错,您应该向Microsoft报告此错误。如果你使用一个分发包,他们会搞砸,你应该向他们报告这是一个bug。

在我的例子中,工具文件夹不在
%USERPROFILE%\.dotnet\
中,所以我必须运行命令
dotnet tool install--global dotnet ef
来安装dotnet ef。然后我就可以运行dotnet ef

这是上述安装命令的结果:


对于那些在更新Visual Studio或.NET Core软件包后遇到问题的人,这是由于.NET Core 3中通过从.NET Core中删除
dotnet ef
并使其成为而进行的更新,可通过以下方式安装:

dotnet工具安装-g dotnet ef


为了便于参考,请参阅和此

我已经尝试了前面的所有答案,但在我的Mac电脑上使用最新(Catalina)更新时,它不起作用

例如,如果您使用的是.NET Core 3版本,则需要运行以下命令:

export PATH=“$PATH:$HOME/.dotnet/tools/”
导出DOTNET\u跳过\u第一次\u经验=false
export DOTNET\u ADD\u GLOBAL\u TOOLS\u TO\u PATH=true
dotnet工具安装--全局dotnet ef--版本3.0.0
dotnet ef数据库更新
如果上述命令给出错误,请按照以下步骤操作

  • 检查路径%USERPROFILE%.dotnet\是否存在

  • 如果没有,则运行下面的命令

    dotnet工具安装-g dotnet ef
    
  • 现在再次检查路径并为下面的路径设置环境变量

    %USERPROFILE%\.dotnet\tool
    
  • 现在在cmd中,设置数据库上下文文件所在的路径,然后运行以下命令

    dotnet ef数据库更新
    

  • 注意:我对.NET Core 3.0很有用。

    对于在JetBrains Rider上遇到此问题的任何人,我尝试了此页面上列出的所有解决方案,并最终进入Visual Studio,在那里运行了
    dotnet工具安装--global dotnet ef--version 3.0.0
    命令,然后在Rider中重新打开,并使用它
    已工作。

    关于路径修复:

    请注意,这会将路径添加到用户路径,而不是系统路径环境变量。从VisualStudio启动“开发者命令提示符”或“开发者PowerShell”时,它不使用用户路径变量。您还需要将其添加到系统环境变量中

    肌萎缩侧索硬化