找不到命令“ dotnet ef”?

时间:2019-07-03 02:22:54

标签: c# entity-framework asp.net-core .net-core csproj

我在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>

11 个答案:

答案 0 :(得分:89)

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

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

This was the result of the above install command

答案 1 :(得分:5)

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

  

dotnet tool install -g dotnet-ef

有关参考,请参见separate package和此this answer

答案 2 :(得分:4)

关于路径修复:

请注意,这会将路径添加到User PATH,而不是System PATH环境变量。从Visual Studio触发“ Developer Command Prompt”或“ Developer Powershell”时,它不使用用户路径变量。您还需要将其添加到System环境变量中。

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

答案 3 :(得分:3)

有时,当您安装新版本的dotnet sdk时,它将击中PATH

  

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

答案 4 :(得分:2)

  

dotnet ef数据库更新

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

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

dotnet工具安装-g dotnet-ef

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

%USERPROFILE%.dotnet \ tool

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

dotnet ef数据库更新

注意:它适用于.Net Core 3.0

答案 5 :(得分:1)

此故障的.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不在您的路上。

这里是what the docs say

  

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

     

OS Path

     

Linux/macOS $HOME/.dotnet/tools

     

Windows %USERPROFILE%\.dotnet\tools

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

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

  

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

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

答案 6 :(得分:1)

我尝试了以上所有答案,但在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

答案 7 :(得分:0)

这是由于.NET Core 3中进行了更新,原因是从.NET Core中删除了dotnet ef并将其作为单独的软件包。

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

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

dotnet工具安装-g dotnet-ef

答案 8 :(得分:0)

在使用.net Core 5.0.0-rc.1的Ubuntu 20.04.1上,我遇到了同样的问题,对我有用的解决方案是将dotnet ef作为本地工具安装

https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools#install-a-local-tool

dotnet new tool-manifest
dotnet tool install  dotnet-ef --version 5.0.0-rc.1.20451.13

答案 9 :(得分:0)

TL&DR dotnet tool install -g dotnet-ef

比率:请参阅ASP.NET Core 3 Preview 4的公告,该公告说明该工具已不再是内置工具,需要进行显式安装。

参考https://devblogs.microsoft.com/dotnet/announcing-entity-framework-core-3-0-preview-4/

答案 10 :(得分:0)

对我来说,关闭解决方案并重新启动 Windows 解决了这个问题。但在此之前,我们需要按照以下步骤检查安装是否正确。

  1. 运行以下命令。如果没有看到 dotnet-ef,则继续执行第 2 步,否则,转到第 3 步。

    dotnet tool list --global
    
  2. 转到路径,%USERPROFILE%\.dotnet\tools 并检查是否 dotnet-ef 有没有。如果没有,那么您可能需要运行

    dotnet tool install --global dotnet-ef --version 3.1.4
    

    我相信你已经做到了。

  3. 将此路径 %USERPROFILE%\.dotnet\tools 添加到您的环境变量中,看看您是否在您的项目中得到它。

  4. 最后,您需要关闭您的项目并重新启动窗口。就我而言,这一步解决了问题。