Command dotnet ef not found
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 aDbContext
, installdotnet 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:
- Microsoft.EntityFrameworkCore.SqlServer
- Microsoft.EntityFrameworkCore.Design
- Microsoft.EntityFrameworkCore.Tools
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.
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, 2021Comments
-
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) -