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>
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.
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
.
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.
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
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
.
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
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.
installation de l'outil dotnet -g dotnet-ef
% USERPROFILE% .dotnet\tool
mise à jour de la base de données dotnet ef
Remarque: cela m'a fonctionné pour .Net Core 3.0
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é.
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.
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