Reputation: 39058
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)
Upvotes: 572
Views: 442892
Reputation: 93003
To install the dotnet-ef
tool, run the following command:
.NET 9
dotnet tool install --global dotnet-ef --version 9.*
.NET 8
dotnet tool install --global dotnet-ef --version 8.*
.NET 7
dotnet tool install --global dotnet-ef --version 7.*
.NET 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.*
For more information about the history of dotnet-ef
, see the announcement for ASP.NET Core 3 Preview 4, which explains that this tool was changed from being built-in to requiring 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.
Upvotes: 1115
Reputation: 746
I searched for hours, but nothing seemed to work above. I had one project that was working and saw that in the project where this was not working, I was missing a file like so ~/config/dotnet-tools.json with the following:
{ "version": 1, "isRoot": true, "tools": { "dotnet-ef": { "version": "8.0.4", "commands": [ "dotnet-ef" ] } } }
Upvotes: 0
Reputation: 131
I had the same issue, just add this to your PATH: %USERPROFILE%.dotnet\tools
Upvotes: 0
Reputation: 61
In my case, I received a 401 Unauthorized when trying to install dotnet ef.
In the end, I found another link Telerik resolution that helped.
Summed up, using Visual Studio 2022, the steps needed was:
dotnet nuget add source "https://nuget.telerik.com/v3/index.json" -u "username" -p "password" -store-password-in-clear-text
Then I could continue to follow Kirk's steps and install dotnet ef
Note: Not ideal to use -store-password-in-clear-text, but there was another issue with encrypted credentials. So for now just used that
Upvotes: 0
Reputation: 449
I had same problem on ubuntu.
First install dotnet-ef
dotnet tool install --global dotnet-ef --version 6.0.0
Then you need to add path to bashrc.
Open bashrc:
vim ~/.bashrc
Add following:
export PATH="$PATH:$HOME/.dotnet/tools/"
Then execute this:
source ~/.bashrc
Upvotes: 7
Reputation: 8588
If you ask yourself what versions are available:
Versions tab on this page: https://www.nuget.org/packages/dotnet-ef/
Besides that as others already mentioned it's:
dotnet tool install --global dotnet-ef --version 5.0.11
Upvotes: 1
Reputation: 338
This will work for me on Visual studio code, in Ubuntu
dotnet tool install --global dotnet-ef
dotnet tool restore
After that all the execution are done like
dotnet tool run dotnet-ef
or
dotnet dotnet-ef
Upvotes: 11
Reputation: 161
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
Upvotes: 15
Reputation: 378
I was having this problem after I installed the dotnet-ef tool using Ansible with sudo escalated privilege on Ubuntu. I had to add become: no for the Playbook task, and then the dotnet-ef tool became available to the current user.
- name: install dotnet tool dotnet-ef
command: dotnet tool install --global dotnet-ef --version {{dotnetef_version}}
become: no
Upvotes: 2
Reputation: 51
Sometimes it may occur due to different users within a system.
So to resolve the problem, you can install the dotnet-ef locally in your solution rather than adding it globally.
Steps to install locally.
Create a local manifest file via
dotnet new tool-manifest
Go to the config
folder:
cd .\.config
Install the tool via
dotnet tool install dotnet-ef --version versionNumber
. It'll be successfully installed and its commands will be accessible within the project.
Upvotes: 5
Reputation: 742
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.
Upvotes: 46
Reputation: 2265
The reason is - The dotnet ef
tool is no longer part of the .NET Core SDK in ASP.NET Core 3.0.
Solution: Install dotnet ef
as a global tool
Steps:
For the latest version:
dotnet tool install --global dotnet-ef
For a specific version:
dotnet tool install --global dotnet-ef --version <<version_number>>
Upvotes: 4
Reputation: 785
I followed these steps, and it worked fine for me:
Add a source:
dotnet nuget add source --name nuget.org https://api.nuget.org/v3/index.json
Run the installation command line:
dotnet tool install --global dotnet-ef --version 5.0.6
Upvotes: 0
Reputation: 2919
If you're using Snap package dotnet-sdk on Linux, this can be resolved by updating your ~.bashrc file / etc. as follows:
#!/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"
Upvotes: 5
Reputation: 85
Run PowerShell or a command prompt as administrator and run the below command.
dotnet tool install --global dotnet-ef --version 3.1.3
Upvotes: 8
Reputation: 1
I had the same problem. I resolved it by uninstalling all the versions on my PC and then reinstalling dotnet
.
Upvotes: 0
Reputation: 2707
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
Upvotes: 42
Reputation: 590
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
Upvotes: 20