97 votes

Impossible de trouver la commande 'dotnet ef'.

J'utilise .NET Core 2.0 sur Arch Linux / Visual Studio Code et j'essaie d'obtenir EF pour fonctionner, mais je continue à obtenir l'erreur :

Impossible de trouver la commande dotnet ef

J'ai cherché partout et aucune des suggestions n'a fonctionné.

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

Voici le résultat de 'dotnet --info', si cela peut vous aider :

[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

Voici 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>

1 votes

Est ~/.dotnet/tools dans votre $PATH ?

0 votes

@OmairMajid thaaanks it worked !!!!! vous êtes le vrai MVP homme. Si vous le postez comme réponse, je l'accepterai.

154voto

Garth Points 416

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

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

This was the result of the above install command

8 votes

Ceci devrait être la réponse

1 votes

Lorsque vous installez une nouvelle version de .NET Celui-ci a fonctionné pour moi : dotnet tool install --global dotnet-ef --version 3.0.1

1 votes

Ensuite, je ne comprends pas comment cela n'est pas marqué comme étant la solution...

135voto

omajid Points 3363

Note aux lecteurs : Si vous n'avez pas installé dotnet ef vous devez d'abord l'installer : dotnet tool install --global dotnet-ef . L'auteur de la question l'a déjà fait. Vous devez d'abord le faire avant que le reste de cette réponse puisse vous aider.

Comment résoudre ce problème

Pour Linux y 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 fonctionner.

Pour Windows :

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

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

Qu'est-ce qui se passe ?

La version .NET Core 3.0 (preview) 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 tous deux référence à dotnet en essayant de trouver un dotnet-ef mais je ne la trouve pas. Comme le dit le troisième point, dotnet-ef n'est pas sur votre chemin.

Voici ce que disent les docteurs :

Global Tools peut être installé 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/ à votre $PATH .

Mais notez aussi 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 les outils globaux qui y sont installés peuvent être appelés directement.

Donc, on dirait que quelque chose a mal tourné. Si vous avez installé en utilisant une archive manuelle, le SDK s'est planté et vous devriez signaler ce bogue à Microsoft. Si vous utilisez un paquet de distribution, ils ont merdé et vous devriez leur signaler ce bogue.

15voto

Elnoor Points 1018

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

dotnet tool install -g dotnet-ef

Pour référence, voir cette réponse et ceci changement brutal

9voto

Ali Points 1297

J'ai essayé toutes les réponses précédentes, et cela n'a pas fonctionné sur mon Mac avec la dernière version du logiciel. macOS v10.15 (Catalina) mise à jour.

Si vous utilisez la version .NET Core 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

0 votes

Pour la mise à jour de la dernière version : dotnet tool update --global dotnet-ef

5voto

Darshan Dave Points 367
dotnet ef database update

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

  1. vérifier que le chemin %USERPROFILE%.dotnet\ existe ou non

  2. Si ce n'est pas le cas, exécutez la commande suivante

    dotnet tool install -g dotnet-ef
  3. Maintenant, vérifiez à nouveau le chemin et définissez la variable d'environnement pour le chemin ci-dessous

    %USERPROFILE%\.dotnet\tool
  4. Maintenant, dans cmd, définissez le chemin où votre fichier de contexte de base de données est présent et puis exécutez la commande suivante

    dotnet ef database update

Note : Cela a fonctionné pour .NET Core 3.0.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X