web-dev-qa-db-fra.com

Impossible de trouver la commande 'dotnet ef'?

J'utilise .NET core 2.0 sur Arch VScode et j'essaie de faire fonctionner les outils EF, mais je reçois toujours cette erreur "impossible de trouver la commande dotnet ef". J'ai à peu près cherché partout et aucune des suggestions n'a fonctionné. Donc, si vous pouvez nous aider, ce serait très apprécié.

Le résultat de l'exécution de "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]$ 

c'est le résultat dotnet --info, si c'est utile

[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

Ceci est mon fichier .csproj

<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>
47
Wasiim Ouro-sama

Note aux lecteurs: si vous n'avez pas installé dotnet ef, vous devez d'abord l'installer: dotnet tool install --global dotnet-ef. Le poseur de questions l'a déjà fait. Vous devez le faire avant que le reste de cette réponse puisse vous aider.

Comment régler ceci

Pour Linux et macOS , ajoutez une ligne à la configuration de votre Shell:

  • bash/zsh:

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

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

Lorsque vous démarrez un nouveau Shell/terminal (ou la prochaine fois que vous vous connectez) dotnet ef devrait marcher.

Pour Windows :

Voir cette question sur la façon d'ajouter à la variable d'environnement PATH.

Vous devez ajouter %USERPROFILE%\.dotnet\tools au PATH.

Que se passe-t-il?

La version .NET Core 3.0 (préversion) de cet échec est beaucoup plus éclairante:

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

Le deuxième et le troisième font référence à dotnet essayant de trouver un dotnet-ef commande mais ne la trouve pas. Comme le dit le troisième point, dotnet-ef n'est pas sur votre chemin.

Voici ce que disent les docs :

Les outils globaux peuvent être installés dans le répertoire par défaut ou dans un emplacement spécifique. Les répertoires par défaut sont:

OS Path

Linux/macOS $HOME/.dotnet/tools

Windows %USERPROFILE%\.dotnet\tools

Vous devez donc ajouter $HOME/.dotnet/tools/ à ton $PATH.

Mais notez également cette partie de la documentation:

Ces emplacements sont ajoutés au chemin de l'utilisateur lors de la première exécution du SDK, de sorte que Global Tools installé là-bas peut être appelé directement.

Il semble donc que quelque chose n'ait pas fonctionné. Si vous avez installé à l'aide d'une archive tar manuelle, le SDK a foiré et vous devez signaler ce bogue à Microsoft. Si vous utilisez un package de distribution, ils ont foiré et vous devez leur signaler cela comme un bogue.

32
Omair Majid

Dans mon cas, le dossier tools n'existait pas dans %USERPROFILE%\.dotnet\ j'ai donc dû exécuter la commande dotnet tool install --global dotnet-ef pour installer dotnet ef. Ensuite, j'ai pu exécuter dotnet ef ...

C'était le résultat de la commande d'installation ci-dessus:

This was the result of the above install command

106
Garth

Pour ceux qui ont rencontré le problème après la mise à jour de leur package Visual Studio ou .NET Core, cela est dû aux mises à jour effectuées dans .NET Core 3 en supprimant dotnet ef à partir de .NET Core et en faire un package séparé qui peut être installé via:

dotnet tool install -g dotnet-ef

Pour référence voir cette réponse et ceci rupture de changement

7
Elnoor

Parfois, lorsque vous installez une nouvelle version de dotnet sdk, elle frappe le PATH.

Vous devez ajouter manuellement le dossier .dotnet/tools de votre répertoire personnel à PATH.

4
baruchiro

J'ai essayé toutes les réponses ci-dessus et je n'ai pas travaillé sur mon Mac avec la dernière mise à jour de Catalina.

si vous utilisez la version .netcore 3 par exemple, vous devez exécuter ces commandes:

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
3
Ali

mise à jour de la base de données dotnet ef

Si la commande ci-dessus vous donne une erreur, veuillez suivre les étapes ci-dessous.

  1. vérifier le chemin% USERPROFILE% .dotnet\existe ou non
  2. sinon, exécutez la commande ci-dessous

installation de l'outil dotnet -g dotnet-ef

  1. Maintenant, vérifiez à nouveau le chemin et définissez la variable d'environnement pour le chemin ci-dessous

% USERPROFILE% .dotnet\tool

  1. Maintenant, dans cmd, définissez le chemin d'accès à votre fichier de contexte de base de données, puis exécutez la commande ci-dessous

mise à jour de la base de données dotnet ef

Remarque: cela m'a fonctionné pour .Net Core 3.0

3
Darshan Dave

Pour tous ceux qui ont des problèmes avec ce problème sur Jetbrains Rider, j'ai essayé toutes les solutions répertoriées sur cette page et finalement je suis allé dans VS et y ai exécuté la commande dotnet tool install --global dotnet-ef --version 3.0.0, puis rouvert dans Rider et ça a marché.

1
Sam Watson

Concernant le correctif du chemin:

N'oubliez pas que cela ajoute le chemin vers le PATH utilisateur, pas la variable d'environnement PATH système. Lors du lancement d'une "invite de commande développeur" ou "développeur Powershell" à partir de Visual Studio, il n'utilise pas de variable de chemin d'accès utilisateur. Vous devrez également l'ajouter à la variable d'environnement système.

De plus, vous devrez redémarrer VS avant que la modification ne prenne effet.

0
Randy Slavey

Cela est dû aux mises à jour effectuées dans .NET Core 3 en supprimant dotnet ef de .NET Core et en en faisant un package distinct.

1-Vous devez ajouter% USERPROFILE% .dotnet\tools au PATH.

2-S'il n'existe pas, exécutez cette commande

installation de l'outil dotnet -g dotnet-ef

0
Shahbaz Umer