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)
8 Réponses :
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 unDbContext
, installezdotnet 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:
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.
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
Dans le cas où encore, le PATH ne fonctionne pas, utilisez la directive ENV comme ceci: ENV PATH $ PATH: /root/.dotnet/tools
J'ai eu le même problème. J'ai résolu, désinstallant toutes les versions de mon PC, puis réinstallez dotnet.
Mieux adapté comme commentaire. Doit expliquer comment résoudre et pourquoi avec des ressources
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.
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é :)
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
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"
Pour moi, le problème a été résolu après avoir fermé Visual Studio et l'ouvrir à nouveau
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
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.