找不到命令“ dotnet ef”?


78

我在Arch VScode上使用.NET Core 2.0,并尝试使EF工具正常工作,但我不断收到该错误“找不到命令dotnet ef”。我只是到处看,所有建议都没有。因此,如果可以的话,请您提供帮助。

运行“ dotnet ef”的结果

[wasiim@wasiim-PC WebApiServerApp]$ dotnet ef --help
Cannot find command 'dotnet ef', please run the following command to install

dotnet tool install --global dotnet-ef
[wasiim@wasiim-PC WebApiServerApp]$ dotnet tool list -g
Package Id            Version      Commands        
---------------------------------------------------
dotnet-dev-certs      2.2.0        dotnet-dev-certs
dotnet-ef             2.2.3        dotnet-ef       
[wasiim@wasiim-PC WebApiServerApp]$ 

这是dotnet --info结果,如果有帮助的话

[wasiim@wasiim-PC WebApiServerApp]$ dotnet --info
.NET Core SDK (reflecting any global.json):
 Version:   2.2.105
 Commit:    7cecb35b92

Runtime Environment:
 OS Name:     arch
 OS Version:  
 OS Platform: Linux
 RID:         arch-x64
 Base Path:   /opt/dotnet/sdk/2.2.105/

Host (useful for support):
  Version: 2.2.3
  Commit:  6b8ad509b6

.NET Core SDKs installed:
  2.2.105 [/opt/dotnet/sdk]

.NET Core runtimes installed:
  Microsoft.NETCore.App 2.2.3 [/opt/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

这是我的.csproj文件

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Folder Include="wwwroot\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Lucene.Net.Analysis.Common" Version="4.8.0-beta00005" />
    <PackageReference Include="Lucene.Net.QueryParser" Version="4.8.0-beta00005" />
    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.5" />
   <PackageReference Include="Lucene.Net" Version="4.8.0-beta00005" />
    <PackageGroup Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.0" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.2.4" />
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />

  </ItemGroup>

</Project>

1
~/.dotnet/tools$PATH
omajid '19

@OmairMajid thaaanks有效!!!!你才是真正的MVP。如果您将其发布为答案,我会接受。
Wasiim Ouro-sama,

Answers:


99

读者注意:如果尚未安装dotnet ef,则需要先安装:dotnet tool install --global dotnet-ef。提问者已经做到了。您需要先执行此操作,然后此答案的其余部分才能有所帮助。

如何解决这个问题

对于LinuxmacOS,在shell的配置中添加一行:

  • bash/ zsh

    export PATH="$PATH:$HOME/.dotnet/tools/"
    
  • csh/ tcsh

    set path = ($path $HOME/.dotnet/tools/)
    

当您启动新的外壳程序/终端时(或下次登录时)dotnet ef应该可以工作。

对于Windows

有关如何添加到环境变量的信息,请参见此问题PATH

您需要添加%USERPROFILE%\.dotnet\tools到中PATH

这是怎么回事?

此故障的.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尝试查找dotnet-ef命令,但是找不到它。如第三点所述,dotnet-ef不在您的道路上。

是文档所说的

可以将Global Tools安装在默认目录或特定位置。默认目录为:

OS Path

Linux/macOS $HOME/.dotnet/tools

Windows %USERPROFILE%\.dotnet\tools

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

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

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

因此,听起来好像出了点问题。如果使用手动tarball安装,则SDK可能已损坏,应将此错误报告给Microsoft。如果您使用分发包,它们会搞砸,您应该将此作为错误报告给他们。


1
这些建议的修复程序均未解决我的问题。在我的情况下,报告的不存在的.NET Core程序看起来像胡说八道:dotnet- @ C:\ Users \ myUser \ AppData \ Local \ Temp \ tmp75c598ec34944633925ed32feffbe40f.rsp
Jack Fox

添加了快速的TLDR运行过程以进行相处。
尼古拉斯

4
这不是正确的答案。正确的答案是在命令提示符中运行“ dotnet工具安装-g dotnet-ef”。只有在此之后,您才应参考上面的答案以正确设置PATH变量。
约翰·温特根斯

1
@JohanWintgens我明白您在说什么,但我认为这是所问问题的答案。问题已经包括运行步骤dotnet tool install...。如果问题不包括这一点,那么您将完全正确。
omajid

该死,这确实是个问题。为防御起见,我实际上必须按Ctrl + F才能在该文本墙中找到它。答案很好!
约翰·温特根斯

131

在我的情况下,tools文件夹不存在,%USERPROFILE%\.dotnet\因此我必须运行命令dotnet tool install --global dotnet-ef来安装dotnet ef。然后我就能运行dotnet ef ...

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

这是上述安装命令的结果


7
这应该是答案
Alexey Strakh

1
当您安装.NET的新版本时,这对我有用:dotnet工具安装--global dotnet-ef --version 3.0.1
Amir Ekbatani 19/11/25

1
其次,我不知道如何将其标记为解决方案……
Johan Wintgens 19/12/23

1
是的,这将使其更容易找到。很高兴它帮助了人们。
Garth

PS控制台必须以管理员身份运行
harveyt

14

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

dotnet tool install -g dotnet-ef

供参考,请参阅此答案和此重大更改


8

我已经尝试了以上所有答案,但是在Mac上使用最新的Catalina更新后无法正常工作。

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

export PATH="$PATH:$HOME/.dotnet/tools/"
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=false
export DOTNET_ADD_GLOBAL_TOOLS_TO_PATH=true

dotnet tool install --global dotnet-ef --version 3.0.0

更新到最新版本:dotnet工具更新--global dotnet-ef
AminGolmahalle

4

有时,当您安装新版本的dotnetsdk时,它会显示PATH

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


4

dotnet ef数据库更新

如果以上命令给您一个错误,请执行以下步骤。

  1. 检查路径%USERPROFILE%.dotnet \是否存在
  2. 如果没有,则运行以下命令

dotnet工具安装-g dotnet-ef

  1. 现在再次检查路径并为以下路径设置环境变量

%USERPROFILE%.dotnet \ tool

  1. 现在在cmd中设置存在数据库上下文文件的路径,然后在以下命令中运行

dotnet ef数据库更新

注意:它适用于.Net Core 3.0


4

关于路径修复:

请注意,这会将路径添加到用户PATH,而不是系统PATH环境变量。从Visual Studio触发“开发人员命令提示符”或“开发人员Powershell”时,它不使用用户路径变量。您还需要将其添加到System环境变量中。

同样,您需要重新启动VS才能使更改生效。


2

对于在Jetbrains Rider上遇到此问题的人,我尝试了此页上列出的所有解决方案,最终进入VS,并在其中运行dotnet工具install --global dotnet-ef --version 3.0.0命令,然后在Rider中重新打开有效。


1
这篇文章不是回答问题的实际尝试。请注意,StackOverflow不能像论坛那样工作,它是一个问答站点,每个帖子都是一个问题或一个问题的答案。帖子中也可以有评论-像这样的小句子-可用于批评或要求作者澄清。这应该是一个评论或新的问题
ρяσѕρєяķ

2
实际上,答案可以通过告诉其他有此问题的人确切地使用哪个命令以及我如何解决我的问题(假设此页面上的其他答案不起作用)而对我来说没有帮助。所以我认为您没有正确阅读它。
山姆·沃森

0

这是由于在.NET Core 3中进行了更新,原因是从.NET Core中删除了dotnet ef并使其成为一个单独的程序包。

1-您需要将%USERPROFILE%.dotnet \ tools添加到PATH。

2-如果不存在,则运行此命令

dotnet工具安装-g dotnet-ef


您在路径中错过了一个“ \”,它应该是%USERPROFILE%\。dotnet \ tools
TamerDev


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.