命令dotnet ef未找到

我遵循的文档来创建初始迁移。当我执行dotnet时,我得到了帮助部分,这意味着PATH正常工作。

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

dotnet ef迁移添加InitialCreate

我得到以下错误:

无法执行,因为指定的命令或文件没有找到。< br / > 可能的原因包括:

  • 你拼错了内置dotnet命令。

  • 你想要执行一个。net Core程序,但是dotnet-ef不存在。

  • 您打算运行一个全局工具,但是在PATH上找不到以dotnet为前缀的可执行文件。

  • 我排除了第一项,因为我复制了命令。

  • 我排除了第二项,因为包Microsoft.EntityFrameworkCore.SqlServer已经安装。

  • 我排除了第三项,因为我在调用dotnet时得到了帮助部分。

我在谷歌上搜索这个问题,但因为这个版本是新的,所以没有太多可以继续的东西,而且/或者它淹没在早期版本的类似问题中。

我试图强制安装微软。EntityFrameworkCore,以防需要显式地添加它。我遇到了错误消息,告诉我可以选择的最新版本是2.2.6,降级是不行的。我不确定如何安装与系统上已有的sql包兼容的版本(更不确定这是否是解决此问题的正确方法)。

检测到包降级:Microsoft。EntityFrameworkCore从3.0.0-preview6.19304.10到2.2.6。直接从项目中引用包以选择不同的版本。< br / >
Microsoft.EntityFrameworkCore.SqlServer 3.0.0-preview6.19304.10 ->
Microsoft.EntityFrameworkCore.Relational 3.0.0-preview6.19304.10 ->
微软。EntityFrameworkCore (>= 3.0.0-preview6.19304.10)
网络→微软。EntityFrameworkCore (>= 2.2.6)

260243 次浏览

使用实例安装dotnet-ef工具。

.净7

dotnet tool install --global dotnet-ef

.网6

dotnet tool install --global dotnet-ef --version 6.*

net 5

dotnet tool install --global dotnet-ef --version 5.*

.NET Core 3

dotnet tool install --global dotnet-ef --version 3.*

有关dotnet-ef历史的更多信息,请参阅ASP. aspc的公告。NET Core 3预览4,它解释了这个工具从内置到需要显式安装:

.NET ef工具不再是.NET核心SDK的一部分

这个变化允许我们将dotnet ef作为一个常规的。net CLI工具发布,它可以作为一个全局或本地工具安装。

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

我也有同样的问题。我通过卸载我PC上的所有版本,然后重新安装dotnet来解决这个问题。

全局工具可以安装在默认目录下,也可以安装在 具体的位置。默认目录为:

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

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

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

解决.NET核心工具使用问题 .NET核心工具使用问题

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

dotnet tool install --global dotnet-ef --version 3.1.3

如果你在Linux上使用提前包dotnet-sdk,这个问题可以通过更新你的~ . bashrc文件来解决,如下所示:

#!/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"

对于在MinGW MSYS上使用。net Core CLI的每个人:

安装后使用

dotnet tool install --global dotnet-ef

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

export PATH=$PATH:/c/Users/username/.dotnet/tools

我在Ubuntu上使用Ansible和sudo升级特权安装dotnet-ef工具后遇到了这个问题。我必须为Playbook任务添加成为:不,然后当前用户就可以使用dotnet-ef工具了。

  - name: install dotnet tool dotnet-ef
command: dotnet tool install --global dotnet-ef --version \{\{dotnetef_version}}
become: no

我遵循了这些步骤,对我来说效果不错:

  1. 添加源:

    dotnet nuget add source --name nuget.org https://api.nuget.org/v3/index.json
    
  2. 执行安装命令行:

    dotnet tool install --global dotnet-ef --version 5.0.6
    

有时,由于系统中的不同用户,可能会出现这种情况。

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

本地安装步骤。

  1. 创建一个本地manifest文件via dotnet new tool-manifest < / p >

  2. 进入config文件夹:

    cd .\.config

  3. 安装工具via dotnet tool install dotnet-ef --version versionNumber。它将被成功安装,它的命令将在项目中被访问

原因是- dotnet ef工具不再是ASP. net核心SDK的一部分。NET Core 3.0。

解决方案:安装dotnet ef作为全局工具

步骤:

  1. 以项目根目录下的管理员身份运行PowerShell或命令提示符
  2. 执行以下命令。

最新版本:

dotnet tool install --global dotnet-ef

For a specific version:

dotnet tool install --global dotnet-ef --version <<version_number>>

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

如果您正在设置此存储库

dotnet new tool-manifest


dotnet tool install --local dotnet-ef --version 5.0.6

然后使用dotnet dotnet-ef代替dotnet-ef

这将为我工作在Visual studio代码,在Ubuntu

dotnet tool install --global dotnet-ef
dotnet tool restore

之后所有的执行都完成了

dotnet tool run dotnet-ef

dotnet dotnet-ef

如果你问自己可用的版本是什么:

本页上的版本的标签: https://www.nuget.org/packages/dotnet-ef/

除此之外,正如其他人已经提到的:

dotnet tool install --global dotnet-ef --version 5.0.11