在.NET Core 3中找不到dotnet ef


168

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

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

dotnet ef migrations add InitialCreate  

我收到以下错误:

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.
  • 自从复制命令以来,我排除了第一项。
  • 我排除了第二项,因为已安装了软件包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)

Answers:


325

请参阅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

要安装该工具的特定版本,请使用以下命令:

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

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

为什么

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

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


5
如果您想验证要安装的版本,请单击这里 nuget 的链接
Juan De la Cruz

2
请注意。[dotnet-ef --version 3.0.0]与[dotnet核心版本3.1.100]最兼容。
催化剂

全球范围内安装很方便,但你也可以在本地安装的dotnet工具现在
扎克·埃斯波西托

不需要Microsoft.EntityFrameworkCore.Tools。
yogihosting

9

编辑:如果您正在使用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

同时将您的dotnet ef命令更改为dotnet-ef


如果仍然无法使用PATH,请使用如下的ENV指令:ENV PATH $ PATH:/root/.dotnet/tools
Jaliya Udagedara

4

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

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

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

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

解决.NET Core工具使用问题


这是我的问题,当我通过“ dotnet工具安装--global dotnet-ef”在MacOS上安装时,提示关闭并重新打开终端窗口,以使新配置生效,但实际上是默认安装文件夹$尚未将HOME / .net / tools添加到PATH变量。
Mike Dailor

我很高兴它对您
有所


0

我有同样的问题。我解决了,卸载了PC中的所有de版本,然后重新安装了dotnet。


6
更适合作为评论。应该说明如何解决以及使用资源的原因
Josh Adams

0

如果您在Linux上使用快照包dotnet-sdk,则可以通过更新〜.bashrc / etc来解决,如下所示:

#!/bin/bash
export DOTNET_ROOT=/snap/dotnet-sdk/current
export MSBuildSDKsPath=$DOTNET_ROOT/sdk/$(${DOTNET_ROOT}/dotnet --version)/Sdks
export PATH="${PATH}:${DOTNET_ROOT}"
export PATH="$PATH:$HOME/.dotnet/tools"

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.