83 votes

Aucun exécutable n'a été trouvé correspondant à la commande "dotnet-ef".

Je réalise un échantillon de projet en utilisant ASP.Net Core RC2 avec Microsoft.EntityFramework.Core et SQLite.

J'ai suivi ce tutoriel : https://damienbod.com/2015/08/30/asp-net-5-with-sqlite-and-entity-framework-7/

Mais, quand je lance cette commande :

dotnet ef migrations add FirstMigration

J'ai eu cette erreur :

No executable found matching command "dotnet-ef"

Voici mon project.json configuration :

{
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0-rc2-3002702",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc2-final",
    "Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
    "Microsoft.EntityFrameworkCore.Sqlite": "1.0.0-rc2-final"
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": {
      "version": "1.0.0-preview1-final",
      "imports": "portable-net45+win8+dnxcore50"
    }
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "dnxcore50",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "gcServer": true
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

0 votes

Cette annonce montre à quoi devrait ressembler votre project.json dans la RC2 si vous utilisez des outils : github.com/aspnet/Announcements/issues/172

60voto

Daniel Grim Points 2133

Entity Framework Core 1.0

Il vous suffit de mettre à jour le tools de votre fichier project.json pour l'inclure :

"Microsoft.EntityFrameworkCore.Tools": {
  "version": "1.0.0-preview1-final",
  "imports": [
    "portable-net45+win8+dnxcore50",
    "portable-net45+win8"
  ]
}

Cela devrait rendre le dotnet ef commandes disponibles.

Important

Je dois également noter ici que le dotnet ef ne seront disponibles que si elles sont exécutées depuis le même répertoire que celui qui contient le fichier project.json.

Entity Framework Core 1.1
Si vous rencontrez à nouveau ce problème après avoir effectué la mise à niveau vers Entity Framework Core 1.1, veillez à remplacer le fichier Microsoft.EntityFrameworkCore.Tools dépendance avec Microsoft.EntityFrameworkCore.Tools.DotNet version 1.1.0-preview4 . Il n'est pas nécessaire de garder le imports non plus. Pour plus d'informations à ce sujet, consultez la rubrique "Mise à niveau vers la version 1.1" sous la rubrique Article de blog annonçant la sortie de la version 1.1 d'Entity Framework Core .

22 votes

Ne pas être dans le dossier avec project.json était mon problème, merci !

6 votes

Cela ne fonctionne pas pour moi. J'obtiens toujours la même erreur.

0 votes

@NikolaSchou : Dans la section outils, essayez sans la structure, c'est à dire en ajoutant juste la version. Ex : `"tools" : { "Microsoft.EntityFrameworkCore.Tools" : "1.0.0-preview2-final", "Microsoft.AspNetCore.Server.IISIntegration.Tools" : "1.0.0-preview2-final" },`

56voto

mwoa Points 693

Entity Framework Core 1.1

J'ajoute quelque chose si vous utilisez VS2017 avec les nouveaux projets .csproj sans fichier project.json.

vous devez éditer le fichier .csproj (cliquez à droite dans l'explorateur de solutions et cliquez sur edit whatever.csproj) et ensuite coller ce qui suit

<ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet">
      <Version>1.0.0-*</Version>
    </DotNetCliToolReference>
  </ItemGroup>

avec l'aimable autorisation de : https://github.com/aspnet/EntityFramework/issues/7358#issuecomment-278379967

0 votes

Cela fonctionne mais, il faut connaître la bonne version. Comme je suis nouveau, il m'a été très difficile de trouver la bonne version. Donc, si vous suivez la réponse, sachez quelle est la version de Microsoft.EntityFrameworkCore.Tools.DotNet et mettez-la dans la balise de version, c'est-à-dire <Version>2.0.3</Version>.

0 votes

Cela sauve vraiment ma journée. Merci ! J'ai mis à jour VS2017 et il a automatiquement mis à jour dotnet core CLI a 2.0 qui n'est pas compatible avec dotnet core 1.0 . Mais il semble que c'est le moment de mettre à jour mon projet. .net core 1.0 a 2.0 .

40voto

Joe Healy Points 3831

Spécifique à VS2017 15.3 ou plus et ASP.NET CORE 2.0 ou plus...

Installez nuget pour le fournisseur de db via la ligne de commande ou le gestionnaire de paquets nuget.

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

Ajoutez la section suivante au fichier .csproj

<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" 
    Version="2.0.0" />
</ItemGroup>

Installez les outils de conception via la ligne de commande ou le gestionnaire nuget dans VS2017.

dotnet add package Microsoft.EntityFrameworkCore.Design

Cela permet d'activer dotnet ef * à la ligne de commande dans le répertoire du projet.

Active les commandes dotnet ef * à la ligne de commande dans le répertoire du projet,

dotnet ef migrations add Initial
dotnet ef database update Initial
dotnet ef dbcontext scaffold

2 votes

Excellente réponse, j'ai cherché partout et la section sur l'ajout à l'"ItemGroup" était ce qui bloquait vraiment pour moi sur l'API Web .NET Core 2 utilisant EF Core 2.

0 votes

Même chose ici. Le site DotNetCliToolReference avec Tools.DotNet était la clé dans mon cas

0 votes

Cela a réglé mon problème, Même problème avec l'API Web NET Core 2 en utilisant EF Core 2

32voto

Darkseal Points 18

Il s'agit d'un problème courant lors du passage de .NET Core 1.0 à .NET Core 1.1+ ou 2.x.

Pour réparer ça, vous devez :

  • Obtenez le Microsoft.EntityFrameworkCore.Tools y Microsoft.EntityFrameworkCore.Tools.DotNet des bibliothèques de paquets en utilisant NuGet.
  • Ajoutez manuellement une référence à ce paquet dans votre fichier project.json (pour .NET Core 1.0) ou <projectName>.csproj (pour .NET Core 1.1+ & 2.x) fichier de configuration du projet.

Plus précisément, pour les projets .NET Core 1.0, ajoutez ceci :

"tools": {
   "Microsoft.EntityFrameworkCore.Tools": "1.0.0"
   "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0"
 }

Pour les projets .NET Core 1.1+ et .NET Core 2.x, ajoutez ceci :

<ItemGroup>
  <DotNetCliToolReference 
      Include="Microsoft.EntityFrameworkCore.Tools" 
      Version="2.0.0" />
  <DotNetCliToolReference 
      Include="Microsoft.EntityFrameworkCore.Tools.DotNet" 
      Version="2.0.0" />
</ItemGroup>

Si vous avez déjà un tools ou une clé json <ItemGroup> avec un ou plusieurs éléments DotNetCliToolReference éléments, il suffit d'ajouter les nouveaux éléments au groupe existant.

IMPORTANT : en dehors de l'exécution des étapes ci-dessus, vous devez lancer l'application dotnet ef dans le dossier racine du projet (celui qui contient le fichier du projet), sinon cela ne fonctionnera pas.

Pour plus d'informations et une explication détaillée de la question, vous pouvez consulter le site suivant mon blog post .

0 votes

Merci mon pote, tu sauves la journée :)

0 votes

Comment lancer la commande dotnet ef dans le dossier racine du projet ?

1 votes

@IanWarburton en ayant C:\Program Files\dotnet dans la variable d'environnement PATH OU en utilisant le chemin complet, c'est-à-dire C:\Program Files\dotnet\dotnet.exe

18voto

yogihosting Points 1845

Je pense que j'ai trouvé le Une solution précise pour le problème - dotnet : Aucun exécutable n'a été trouvé correspondant à la commande "dotnet-ef". ..

J'utilise dot net core 2.0 dans VS 2017 versio 15.5.3.

Cause de cette erreur

Cette erreur est due au fait que le Nuget es impossible de trouver el fichier de solution sur l'emplacement.

Solution : - Déplacez-vous dans le répertoire où se trouve la classe 'Startup.cs'.

  1. J'ai déménagé à la Racine en ajoutant les éléments suivants commande sur votre Console du gestionnaire de paquets .

    cd . \School1

Ici, "Ecole1" était mon Répertoire racine du projet, et il contient ma classe 'Startup.cs', il sera différent dans votre cas.

  1. Ensuite, exécutez la commande dotnet ef sur Console du gestionnaire de paquets qui va maintenant s'exécuter avec succès.

Exemple avec des images pour une bonne compréhension

  1. J'ai obtenu une erreur lors de l'exécution dotnet ef . enter image description here

  2. J'ai corrigé l'erreur en me déplaçant vers le dossier racine avec la commande cd .\School1

J'espère que cela aidera mes collègues développeurs Dot Net.

enter image description here

1 votes

Oui, cela m'a aidé à résoudre le même type de problème auquel je faisais face. merci.

1 votes

Cela m'aide dans une certaine mesure. Dans mon cas, pour résoudre le problème, je suis également la réponse de @Michael Freidgeim.

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