在.NET Core 3中找不到dotnet ef

Kon*_*ten 44 c# entity-framework-core .net-core asp.net-core .net-core-3.0

我正在关注文档以创建初始迁移。执行时dotnet,我得到了帮助部分,这意味着PATH可以正常工作。

然后,我尝试从控制台窗口的文档中执行以下命令:

dotnet ef migrations add InitialCreate  
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

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.
Run Code Online (Sandbox Code Playgroud)
  • 自从复制命令以来,我排除了第一项。
  • 由于安装了软件包Microsoft.EntityFrameworkCore.SqlServer,因此我排除了第二项。
  • 我排除了第三项,因为调用dotnet时会获得帮助部分。

我正在搜索该问题,但是由于该版本是新版本,因此没有太多工作要做,并且/或者它淹没了早期版本中的类似问题。

我试图强行安装Microsoft.EntityFrameworkCore,以防万一需要显式添加它。我遇到错误消息,告诉我要选择的最新版本是2.2.6,并且降级是不可行的。我不确定如何安装与我的系统上已有的SQL软件包兼容的版本(甚至无法确定这是否是解决此问题的正确方法)。

检测到的包降级:Microsoft.EntityFrameworkCore从3.0.0-preview6.19304.10降为2.2.6。直接从项目中引用包以选择其他版本。 Web-
>
Microsoft.EntityFrameworkCore.SqlServer 3.0.0-preview6.19304.10->
Microsoft.EntityFrameworkCore.Relational 3.0.0-preview6.19304.10->
Microsoft.EntityFrameworkCore(> = 3.0.0-preview6.19304.10)Web-
> Microsoft。 EntityFrameworkCore(> = 2.2.6)

Kir*_*kin 71

请参阅有关ASP.NET Core 3 Preview 4 的公告,该公告说明该工具已不再内置,需要显式安装:

dotnet ef工具不再是.NET Core SDK的一部分

此更改使我们可以dotnet ef作为常规.NET CLI工具发布,可以将其安装为全局或本地工具。例如,为了能够管理迁移或搭建a DbContext,请dotnet ef输入以下命令作为全局工具安装:

dotnet tool install --global dotnet-ef --version 3.0.0
Run Code Online (Sandbox Code Playgroud)

更改原因在docs中进行了解释:

为什么

此更改使我们能够dotnet ef在NuGet上作为常规.NET CLI工具进行分发和更新,这与EF Core 3.0始终也作为NuGet软件包分发的事实一致。

此外,您可能需要向项目中添加以下NuGet软件包:

  • 安装该工具后...同样的错误。当尝试重新安装`工具'dotnet-ef'已安装。`。然而运行“dotnet ef”会导致OP中出现错误 (13认同)
  • [这里是链接](https://www.nuget.org/packages/dotnet-ef/3.0.0)到nuget,如果您想验证要安装的版本 (3认同)
  • 请注意.. [dotnet-ef --version 3.0.0] 与 [dotnet core version 3.1.100] 最兼容。 (2认同)
  • @DouglasGaskell这通常意味着这是一个路径问题:/sf/answers/4265674591/。 (2认同)

Ama*_*ndo 34

我通过使用以下命令在本地安装dotnet-f 工具解决了这个问题。

如果您正在设置此存储库

dotnet new tool-manifest

dotnet tool install --local dotnet-ef --version 5.0.6
Run Code Online (Sandbox Code Playgroud)

然后使用dotnet dotnet-ef而不是dotnet-ef


Nic*_*cer 22

如果您使用 Dockerfile 进行部署,这些是解决此问题所需采取的步骤。

更改您的 Dockerfile 以包含以下内容:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
ENV PATH $PATH:/root/.dotnet/tools
RUN dotnet tool install -g dotnet-ef --version 3.1.1
Run Code Online (Sandbox Code Playgroud)

还将您的dotnet ef命令更改为dotnet-ef


Gam*_*ier 11

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

  • Linux/macOS ---> $HOME/.dotnet/tools

  • Windows ---> %USERPROFILE%\.dotnet\tools

如果您尝试运行全局工具,请检查计算机上的 PATH 环境变量是否包含安装全局工具的路径以及可执行文件是否在该路径中。

解决 .NET Core 工具使用问题


小智 9

这对我在 Ubuntu 中的 Visual Studio Code 上有用

dotnet tool install --global dotnet-ef
dotnet tool restore
Run Code Online (Sandbox Code Playgroud)

之后所有的执行都像这样完成

dotnet tool run dotnet-ef
Run Code Online (Sandbox Code Playgroud)

或者

dotnet dotnet-ef
Run Code Online (Sandbox Code Playgroud)

  • 首先,您应该创建清单:“dotnet new tool-manifest”,然后“dotnet tool install --local dotnet-ef” (3认同)

小智 5

以管理员身份运行 PowerShell 或命令提示符并运行以下命令。

dotnet tool install --global dotnet-ef --version 3.1.3
Run Code Online (Sandbox Code Playgroud)


小智 5

对于在MinGW MSYS上使用 .NET Core CLI 的每个人:

安装后使用

dotnet tool install --global dotnet-ef
Run Code Online (Sandbox Code Playgroud)

将此行添加到bashrc文件(C:\msys64\home\username\- .bashrc (位置取决于您的设置)

export PATH=$PATH:/c/Users/username/.dotnet/tools
Run Code Online (Sandbox Code Playgroud)


小智 5

有时可能会由于系统内的不同用户而发生。

因此,要解决该问题,您可以在解决方案中本地安装 dotnet-ef,而不是全局添加它。

本地安装步骤。

  1. 通过创建本地清单文件 dotnet new tool-manifest

  2. 转到config文件夹:

    cd .\.config

  3. 通过安装该工具 dotnet tool install dotnet-ef --version versionNumber。它将成功安装,并且可以在项目中访问其命令。

  • 我建议您在发布自己的答案之前检查现有答案。该问题是由于版本的早期阶段造成的(检查帖子的日期)。 (3认同)