Command dotnet ef not found

185,862

Solution 1

See the announcement for ASP.NET Core 3 Preview 4, which explains that this tool is no longer built-in and requires an explicit install:

The dotnet ef tool is no longer part of the .NET Core SDK

This change allows us to ship dotnet ef as a regular .NET CLI tool that can be installed as either a global or local tool. For example, to be able to manage migrations or scaffold a DbContext, install dotnet ef as a global tool typing the following command:

dotnet tool install --global dotnet-ef

To install a specific version of the tool (see all available versions at nuget.org), use the following command:

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

The reason for the change is explained in the docs:

Why

This change allows us to distribute and update dotnet ef as a regular .NET CLI tool on NuGet, consistent with the fact that the EF Core 3.0 is also always distributed as a NuGet package.

In addition, you might need to add the following NuGet packages to your project:

Solution 2

If you are using a Dockerfile for deployments these are the steps you need to take to resolve this issue.

Change your Dockerfile to include the following:

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

Also change your dotnet ef commands to be dotnet-ef

Solution 3

Global tools can be installed in the default directory or in a specific location. The default directories are:

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

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

If you're trying to run a global tool, check that the PATH environment variable on your machine contains the path where you installed the global tool and that the executable is in that path.

Troubleshoot .NET Core tool usage issues

Solution 4

For everyone using .NET Core CLI on MinGW MSYS:

After installing using

dotnet tool install --global dotnet-ef

add this line to to the bashrc file (C:\msys64\home\username\ - .bashrc (the location depends on your setup)

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

Solution 5

I solved this problem by installing dotnet-f tool locally with the following commands.

If you are setting up this repository

dotnet new tool-manifest

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

Then use dotnet dotnet-ef instead of dotnet-ef.

Share:
185,862
Konrad Viltersten
Author by

Konrad Viltersten

A self taught code monkey since the age of 10 when I got my first computer, the coolest Atari 65XE. Later on, a mathematics and computer science student at a university with a lot of side-studies in philosophy, history, Japanese etc. Today, a passionate developer with focus on web related technology from UX, through JS/TS to C# with a touch of SQL. Motto: A lousy programmer knows how to create problems. A good programmer knows how to solve problems. A great programmer knows how to avoid them. (Get the double meaning?) Works at: http://kentor.se Blogs at: http://konradviltersten.wordpress.com Lives at: http://viltersten.somee.com

Updated on December 01, 2021

Comments

  • Konrad Viltersten
    Konrad Viltersten over 2 years

    I'm following the docs in order to create an initial migration. When I execute dotnet, I get the help section, meaning that the PATH works properly.

    Then I try to execute the command below from the docs in console window:

    dotnet ef migrations add InitialCreate

    I get the following error:

    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.

    • I excluded the first item since I copied the command.

    • I excluded the second item because the package Microsoft.EntityFrameworkCore.SqlServer is installed.

    • I excluded the third item because I get the help section when invoking dotnet.

    I'm googling the issue but since the version is new, there's not much to go on and/or it's drowning in similar issues from earlier versions.

    I tried to forcibly install Microsoft.EntityFrameworkCore just in case it needs to be explicitly added. I ran into the error message telling me that the latest version to pick from is 2.2.6 and a downgrade is a no-go. I'm not sure how to install the version compatible with the SQL-package I have on my system already (and even less certain if that's right approach to kill this issue).

    Detected package downgrade: Microsoft.EntityFrameworkCore from 3.0.0-preview6.19304.10 to 2.2.6. Reference the package directly from the project to select a different version.
    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)