Kann den Befehl 'dotnet ef' nicht finden?

75

Ich verwende .NET Core 2.0 unter Arch VScode und versuche, EF-Tools zum Laufen zu bringen, erhalte jedoch weiterhin den Fehler "Befehl dotnet ef kann nicht gefunden werden". Ich habe fast überall gesucht und keiner der Vorschläge hat funktioniert. Wenn Sie also bitte helfen können, wäre das sehr dankbar.

Das Ergebnis der Ausführung von 'dotnet ef'

[wasiim@wasiim-PC WebApiServerApp]$ dotnet ef --help
Cannot find command 'dotnet ef', please run the following command to install

dotnet tool install --global dotnet-ef
[wasiim@wasiim-PC WebApiServerApp]$ dotnet tool list -g
Package Id            Version      Commands        
---------------------------------------------------
dotnet-dev-certs      2.2.0        dotnet-dev-certs
dotnet-ef             2.2.3        dotnet-ef       
[wasiim@wasiim-PC WebApiServerApp]$ 

Dies ist das dotnet --info Ergebnis, wenn es hilfreich ist

[wasiim@wasiim-PC WebApiServerApp]$ dotnet --info
.NET Core SDK (reflecting any global.json):
 Version:   2.2.105
 Commit:    7cecb35b92

Runtime Environment:
 OS Name:     arch
 OS Version:  
 OS Platform: Linux
 RID:         arch-x64
 Base Path:   /opt/dotnet/sdk/2.2.105/

Host (useful for support):
  Version: 2.2.3
  Commit:  6b8ad509b6

.NET Core SDKs installed:
  2.2.105 [/opt/dotnet/sdk]

.NET Core runtimes installed:
  Microsoft.NETCore.App 2.2.3 [/opt/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

Dies ist meine .csproj-Datei

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Folder Include="wwwroot\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Lucene.Net.Analysis.Common" Version="4.8.0-beta00005" />
    <PackageReference Include="Lucene.Net.QueryParser" Version="4.8.0-beta00005" />
    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.5" />
   <PackageReference Include="Lucene.Net" Version="4.8.0-beta00005" />
    <PackageGroup Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.0" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.2.4" />
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />

  </ItemGroup>

</Project>
Wasiim Ouro-sama
quelle
1
Ist ~/.dotnet/toolsin deinem $PATH?
Omajid
@OmairMajid thaaanks es hat funktioniert !!!!! Du bist der echte MVP-Mann. Wenn Sie es als Antwort posten, werde ich akzeptieren.
Wasiim Ouro-sama

Antworten:

90

Hinweis für Leser: Wenn Sie nicht installiert haben dotnet ef, müssen Sie es zuerst installieren : dotnet tool install --global dotnet-ef. Der Fragesteller hat das schon getan. Sie müssen dies zuerst tun, bevor der Rest dieser Antwort helfen kann.

Wie man das behebt

Fügen Sie unter Linux und MacOS der Konfiguration Ihrer Shell eine Zeile hinzu:

  • bash/ zsh:

    export PATH="$PATH:$HOME/.dotnet/tools/"
    
  • csh/ tcsh:

    set path = ($path $HOME/.dotnet/tools/)
    

Wenn Sie eine neue Shell / ein neues Terminal starten (oder wenn Sie sich das nächste Mal anmelden), dotnet efsollte dies funktionieren.

Für Windows :

In dieser Frage erfahren Sie, wie Sie der PATHUmgebungsvariablen hinzufügen .

Sie müssen hinzufügen , %USERPROFILE%\.dotnet\toolsum die PATH.

Was ist los?

Die .NET Core 3.0-Version (Vorschau) dieses Fehlers ist viel aufschlussreicher:

$ dotnet ef
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.

Der zweite und der dritte beziehen sich beide auf den dotnetVersuch, einen dotnet-efBefehl zu finden , können ihn aber nicht finden. Wie der dritte Punkt sagt, dotnet-efist nicht in Ihrem Weg.

Hier ist , was die docs sagen :

Globale Tools können im Standardverzeichnis oder an einem bestimmten Speicherort installiert werden. Die Standardverzeichnisse sind:

OS Path

Linux/macOS $HOME/.dotnet/tools

Windows %USERPROFILE%\.dotnet\tools

Also sollten Sie $HOME/.dotnet/tools/zu Ihrem hinzufügen $PATH.

Beachten Sie aber auch diesen Teil aus den Dokumenten:

Diese Speicherorte werden dem Pfad des Benutzers hinzugefügt, wenn das SDK zum ersten Mal ausgeführt wird, sodass die dort installierten globalen Tools direkt aufgerufen werden können.

Es hört sich also so an, als wäre etwas schief gelaufen. Wenn Sie mit einem manuellen Tarball installiert haben, ist das SDK fehlerhaft und Sie sollten diesen Fehler Microsoft melden. Wenn Sie ein Distributionspaket verwenden, haben sie es vermasselt und Sie sollten dies als Fehler melden.

omajid
quelle
1
Keine dieser empfohlenen Korrekturen hat meine Situation behoben. In meiner Situation sieht das gemeldete .NET Core-Programm, das nicht existiert, wie Unsinn aus: dotnet- @ C: \ Users \ myUser \ AppData \ Local \ Temp \ tmp75c598ec34944633925ed32feffbe40f.rsp
Jack Fox
Es wurde ein schneller TLDR-Durchlauf hinzugefügt, um miteinander auszukommen.
Nicholas
4
Dies ist NICHT die richtige Antwort. Die richtige Antwort lautet "dotnet tool install -g dotnet-ef" in der Eingabeaufforderung. Erst danach sollten Sie sich auf die obige Antwort beziehen, um die Variable PATH richtig einzustellen.
Johan Wintgens
1
@ JohanWintgens Ich verstehe, was Sie sagen, aber ich denke, es ist die Antwort auf die gestellte Frage. Die Frage enthält bereits einen Schritt dotnet tool install.... Wenn die Frage das nicht enthalten würde, wären Sie völlig richtig.
Omajid
Verdammt, es ist in der Tat in Frage. Zu meiner Verteidigung musste ich tatsächlich Strg + F drücken, um es in dieser Textwand zu finden. Gute Arbeit bei der Antwort!
Johan Wintgens
130

In meinem Fall war der Tools-Ordner nicht vorhanden, %USERPROFILE%\.dotnet\daher musste ich den Befehl dotnet tool install --global dotnet-efausführen, um dotnet ef zu installieren. Dann konnte ich dotnet ef ...

Dies war das Ergebnis des obigen Installationsbefehls:

Dies war das Ergebnis des obigen Installationsbefehls

Garth
quelle
7
Dies sollte die Antwort sein
Alexey Strakh
1
Wenn Sie eine neue Version von .NET installieren, hat diese für mich funktioniert: dotnet tool install --global dotnet-ef --version 3.0.1
Amir Ekbatani
1
Zweitens verstehe ich nicht, wie dies nicht als Lösung markiert ist ...
Johan Wintgens
1
Ja, es würde das Auffinden erleichtern. Ich bin froh, dass es den Leuten geholfen hat.
Garth
PS Die Konsole muss als Administrator ausgeführt werden
Harvey
14

Für diejenigen, die nach dem Aktualisieren ihres Visual Studio- oder .NET Core-Pakets auf das Problem gestoßen sind, ist dies auf Aktualisierungen zurückzuführen, die in .NET Core 3 vorgenommen wurden, indem sie dotnet efaus .NET Core entfernt und zu einem separaten Paket gemacht wurden, das installiert werden kann über:

dotnet tool install -g dotnet-ef

Als Referenz siehe diese Antwort und diese bahnbrechende Änderung

Elnoor
quelle
6

Ich habe alle oben genannten Antworten ausprobiert und mit dem neuesten Catalina-Update auf meinem Mac nicht funktioniert.

Wenn Sie beispielsweise die .netcore 3-Version verwenden, müssen Sie die folgenden Befehle ausführen:

export PATH="$PATH:$HOME/.dotnet/tools/"
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=false
export DOTNET_ADD_GLOBAL_TOOLS_TO_PATH=true

dotnet tool install --global dotnet-ef --version 3.0.0
Harry Sarshogh
quelle
für das Update auf die letzte Version: dotnet tool update --global dotnet-ef
AminGolmahalle
4

Manchmal, wenn Sie eine neue Version von dotnetsdk installieren , trifft es die PATH.

Sie müssen manuell die Ordner hinzufügen .dotnet/toolsaus Ihrem Home - Verzeichnis zu PATH.

Baruchiro
quelle
4

Aktualisierung der dotnet ef-Datenbank

Wenn der obige Befehl einen Fehler anzeigt, gehen Sie bitte wie folgt vor.

  1. Überprüfen Sie den Pfad% USERPROFILE% .dotnet \ existiert oder nicht
  2. Wenn nicht, führen Sie den folgenden Befehl aus

dotnet tool install -g dotnet-ef

  1. Überprüfen Sie nun erneut den Pfad und legen Sie die Umgebungsvariable für den folgenden Pfad fest

% USERPROFILE% .dotnet \ tool

  1. Legen Sie nun in cmd den Pfad fest, in dem sich Ihre Datenbankkontextdatei befindet, und führen Sie den folgenden Befehl aus

Aktualisierung der dotnet ef-Datenbank

Hinweis: Es hat bei .Net Core 3.0 funktioniert

Darshan Dave
quelle
4

In Bezug auf die Pfadkorrektur:

Beachten Sie, dass dadurch der Pfad zum Benutzerpfad und nicht zur Umgebungsvariablen Systempfad hinzugefügt wird. Beim Auslösen einer "Developer Command Prompt" oder "Developer Powershell" aus Visual Studio wird keine Benutzerpfadvariable verwendet. Sie müssen es auch zur Systemumgebungsvariablen hinzufügen.

Außerdem müssen Sie VS neu starten, bevor die Änderung wirksam wird.

Randy Slavey
quelle
1

Für alle, die mit diesem Problem auf Jetbrains Rider zu kämpfen haben, habe ich alle auf dieser Seite aufgeführten Lösungen ausprobiert und bin schließlich zu VS gegangen und habe dort den Befehl dotnet tool install --global dotnet-ef --version 3.0.0 ausgeführt und dann in Rider und erneut geöffnet es funktionierte.

Sam Watson
quelle
1
Dieser Beitrag ist kein wirklicher Versuch, die Frage zu beantworten. Bitte beachten Sie, dass StackOverflow nicht wie ein Diskussionsforum funktioniert. Es handelt sich um eine Q & A-Site, auf der jeder Beitrag entweder eine Frage oder eine Antwort auf eine Frage ist. Beiträge können auch Kommentare enthalten - kleine Sätze wie dieser -, mit denen ein Autor kritisiert oder um Klärung gebeten werden kann. Dies sollte entweder ein Kommentar oder eine neue Frage sein
ρяσssρєя K
1
Tatsächlich hilft die Antwort, indem sie anderen Personen mit dieser Frage genau sagt, welchen Befehl sie verwenden sollen und wie ich mein Problem gelöst habe - vorausgesetzt, die anderen Antworten auf dieser Seite funktionieren nicht -, was für mich nicht der Fall war. Ich glaube nicht, dass du es richtig gelesen hast.
Sam Watson
0

Dies ist auf Aktualisierungen in .NET Core 3 zurückzuführen, bei denen dotnet ef aus .NET Core entfernt und zu einem separaten Paket gemacht wurde.

1-Sie müssen dem PATH% USERPROFILE% .dotnet \ tools hinzufügen.

2-Wenn nicht vorhanden, führen Sie diesen Befehl aus

dotnet tool install -g dotnet-ef

Shahbaz Umer
quelle
Wenn Sie ein "\" im Pfad verpasst haben, sollte es% USERPROFILE% \. dotnet \ tools sein
TamerDev