217
votes

dotnet ef introuvable dans .NET Core 3

Je suis la documentation afin de créer une migration initiale. Lorsque dotnet , j'obtiens la section d'aide, ce qui signifie que le PATH fonctionne correctement.

Ensuite, j'essaye d'exécuter la commande ci-dessous à partir des documents dans la fenêtre de la console:

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.

J'obtiens l'erreur suivante:

dotnet ef migrations add InitialCreate  
  • J'ai exclu le premier élément depuis que j'ai copié la commande.
  • J'ai exclu le deuxième élément car le package Microsoft.EntityFrameworkCore.SqlServer est installé.
  • J'ai exclu le troisième élément car j'obtiens la section d'aide lorsque j'appelle dotnet .

Je recherche le problème sur Google, mais comme la version est nouvelle, il n'y a pas grand chose à faire et / ou elle se noie dans des problèmes similaires des versions précédentes.

J'ai essayé d'installer de force Microsoft.EntityFrameworkCore juste au cas où il faudrait l'ajouter explicitement. Je suis tombé sur le message d'erreur me disant que la dernière version à choisir est la 2.2.6 et qu'une rétrogradation est interdite. Je ne sais pas comment installer la version compatible avec le package SQL que j'ai déjà sur mon système (et encore moins certain si c'est la bonne approche pour éliminer ce problème).

Rétrogradation de package détectée: Microsoft.EntityFrameworkCore de 3.0.0-preview6.19304.10 à 2.2.6. Référencez le package directement à partir du projet pour sélectionner une version différente.
Web ->
Microsoft.EntityFrameworkCore.SqlServer 3.0.0-aperçu6.19304.10 ->
Microsoft.EntityFrameworkCore.Relational 3.0.0-aperçu6.19304.10 ->
Microsoft.EntityFrameworkCore (> = 3.0.0-preview6.19304.10)
Web -> Microsoft.EntityFrameworkCore (> = 2.2.6)


0 commentaires

8 Réponses :


420
votes

Consultez l' annonce pour ASP.NET Core 3 Preview 4, qui explique que cet outil n'est plus intégré et nécessite une installation explicite:

L'outil dotnet ef ne fait plus partie du SDK .NET Core

Ce changement nous permet d'expédier dotnet ef tant qu'outil CLI .NET classique qui peut être installé en tant qu'outil global ou local. Par exemple, pour être en mesure de gérer les migrations ou d'échafauder un DbContext , installez dotnet ef tant qu'outil global en tapant la commande suivante:

dotnet tool install --global dotnet-ef --version 3.1.4

Pour installer une version spécifique de l'outil, utilisez la commande suivante:

dotnet tool install --global dotnet-ef

La raison du changement est expliquée dans la documentation :

Pourquoi

Cette modification nous permet de distribuer et de mettre à jour dotnet ef tant qu'outil CLI .NET standard sur NuGet, ce qui est cohérent avec le fait que EF Core 3.0 est également toujours distribué en tant que package NuGet.

En outre, vous devrez peut-être ajouter les packages NuGet suivants à votre projet:


5 commentaires

Voici le lien vers nuget si vous souhaitez vérifier la version à installer


Juste une note .. [dotnet-ef --version 3.0.0] est le plus compatible pour [dotnet core version 3.1.100].


L'installation globale est pratique, mais vous pouvez également installer les outils dotnet localement maintenant


Microsoft.EntityFrameworkCore.Tools n'est pas nécessaire.


L'outil «dotnet-ef» est déjà installé. Mais même problème que OP.



14
votes

EDIT: Si vous utilisez un Dockerfile pour les déploiements, voici les étapes à suivre pour résoudre ce problème.

Modifiez votre Dockerfile pour inclure les éléments suivants:

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

Modifiez également vos commandes dotnet ef en dotnet-ef


1 commentaires

Dans le cas où encore, le PATH ne fonctionne pas, utilisez la directive ENV comme ceci: ENV PATH $ PATH: /root/.dotnet/tools



0
votes

J'ai eu le même problème. J'ai résolu, désinstallant toutes les versions de mon PC, puis réinstallez dotnet.


1 commentaires

Mieux adapté comme commentaire. Doit expliquer comment résoudre et pourquoi avec des ressources



5
votes

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

  • Linux / macOS ---> $ HOME / .dotnet / tools

  • Windows --->% USERPROFILE% \. Dotnet \ tools

Si vous essayez d'exécuter un outil global, vérifiez que la variable d'environnement PATH sur votre ordinateur contient le chemin où vous avez installé l'outil global et que l'exécutable se trouve dans ce chemin.

Résoudre les problèmes d'utilisation de l'outil .NET Core


2 commentaires

C'était mon problème, lorsque j'ai installé sur MacOS via "dotnet tool install --global dotnet-ef", j'ai reçu une invite pour fermer et rouvrir la fenêtre du terminal afin que la nouvelle configuration prenne effet, mais en fait le dossier d'installation par défaut $ HOME / .net / tools n'a pas été ajouté à la variable PATH.


Je suis heureux que cela vous ait aidé :)



4
votes

Exécutez PowerShell ou l'invite de commande en tant qu'administrateur et exécutez la commande ci-dessous.

installation de l'outil dotnet --global dotnet-ef --version 3.1.3


0 commentaires

0
votes

si vous utilisez le package snap dotnet-sdk sous Linux, cela peut être résolu en mettant à jour votre ~ .bashrc / etc. comme suit:

#!/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"


0 commentaires

0
votes

Pour moi, le problème a été résolu après avoir fermé Visual Studio et l'ouvrir à nouveau


0 commentaires

-1
votes

Pour tous ceux qui utilisent .NET Core CLI sur MinGW MSYS. Après l'installation en utilisant

export PATH=$PATH:/c/Users/username/.dotnet/tools

ajoutez cette ligne au fichier bashrc c: \ msys64 \ home \ username \ .bashrc (l'emplacement dépend de votre configuration)

dotnet tool install --global dotnet-ef


2 commentaires

Cette réponse ne résout pas le problème du PO. Veuillez envisager de répondre à la question générale, tout en présentant cette manière spécifique de résoudre le problème.


OP n'explique pas son environnement. Une «fenêtre de console» pourrait utiliser de nombreux environnements.