Aucun exécutable trouvé correspondant à la commande “dotnet-ef”

Je fais un exemple 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 cette erreur:

 No executable found matching command "dotnet-ef" 

Voici ma configuration project.json :

 { "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%" ] } } 

Entity Framework Core 1.0

Vous devez simplement mettre à jour la section des tools de votre fichier project.json pour inclure ceci:

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

Cela devrait rendre les commandes dotnet ef disponibles.

Important

Je devrais également noter ici que les commandes dotnet ef ne seront disponibles que si vous les exécutez depuis le même répertoire que celui contenant le fichier project.json.

Entity Framework Core 1.1
Si vous rencontrez ce problème à nouveau après la mise à niveau vers Entity Framework Core 1.1, veillez à remplacer la dépendance Microsoft.EntityFrameworkCore.Tools.DotNet par Microsoft.EntityFrameworkCore.Tools.DotNet version 1.1.0-preview4 . Il n’est pas nécessaire de conserver la section des imports non plus. Pour plus d’informations à ce sujet, consultez l’en-tête «Mise à niveau vers la version 1.1» du billet de blog de l’annonce de la version d’Entity Framework Core 1.1 .

Entity Framework Core 1.1

Ajout de ceci si vous utilisez VS2017 avec les nouveaux projets .csproj sans fichier project.json

vous devez éditer le fichier .csproj (cliquez dessus avec le bouton droit de la souris dans l’explorateur de solutions et cliquez sur Modifier some.csproj), puis collez-le dans

   1.0.0-*   

courtoisie de: https://github.com/aspnet/EntityFramework/issues/7358#issuecomment-278379967

Spécifique à VS2017 15.3 ou supérieur et à ASP.NET CORE 2.0 ou supérieur …

Installez nuget for db provider via la ligne de commande ou le gestionnaire de packages nuget.

 dotnet add package Microsoft.EntityFrameworkCore.SqlServer 

Ajouter la section suivante à .csproj

    

Installez les outils de conception à l’aide de la ligne de commande ou du gestionnaire de nugets dans VS2017.

 dotnet add package Microsoft.EntityFrameworkCore.Design 

Cela active dotnet ef * sur la ligne de commande du répertoire du projet.

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

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

C’est un problème courant lors du passage de .NET Core 1.0 à .NET Core 1.1+ ou 2.x.

Pour résoudre ce problème, vous devez:

  • Obtenez les bibliothèques de packages Microsoft.EntityFrameworkCore.Tools et Microsoft.EntityFrameworkCore.Tools.DotNet à l’ aide de NuGet.
  • Ajoutez manuellement une référence à ce package dans votre fichier de configuration de projet project.json (pour .NET Core 1.0) ou .csproj (pour .NET Core 1.1+ et 2.x).

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:

     

Si vous avez déjà une clé json tools ou un élément avec un ou plusieurs éléments DotNetCliToolReference existants, ajoutez simplement les nouveaux au groupe existant.

IMPORTANT : outre l’exécution des étapes ci-dessus, vous devez lancer la commande dotnet ef dans le dossier racine du projet (celui contenant le fichier du projet), sinon cela ne fonctionnera pas.

Pour plus d’informations et une explication détaillée du problème, vous pouvez également lire cet article .

Je pense que j’ai trouvé la solution précise pour le problème – dotnet: Aucun exécutable trouvé commande correspondante “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 n’est pas en mesure de trouver le fichier de solution sur l’emplacement.

Solution

  1. Accédez à la racine en ajoutant la commande ci-dessous sur votre console Gestionnaire de packages .

    cd. \ School1

Ici, «School1» était mon répertoire racine du projet. Ce sera différent dans votre cas.

  1. Ensuite, exécutez la commande dotnet ef sur la console du gestionnaire de packages qui s’exécutera correctement.

Exemple avec des images pour une compréhension claire

  1. J’ai eu une erreur Erreur lors de l’exécution de dotnet ef . entrer la description de l'image ici

  2. J’ai corrigé l’erreur en allant dans le dossier racine avec la commande cd .\School1

J’espère que cela aidera mes compasortingotes Dot Net Developers.

entrer la description de l'image ici

J’ai dû append Microsoft.EntityFrameworkCore.Tools. DotNet pour travailler. La section des outils de votre fichier project.json ressemblera à ceci:

 "tools": { "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final", "Microsoft.AspNetCore.Razor.Tools": "1.1.0-preview4-final", "Microsoft.EntityFrameworkCore.Tools":"1.1.0-preview4-final", "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final" }, 

Si vous rencontrez ce problème et exécutez le kernel asp.net avec l’outil CLI, vous pouvez le résoudre en ajoutant dans le fichier xx.csproj, et dotnet restore . Ensuite, vous pouvez utiliser la commande dotnet ef.

J’utilisais un projet de bibliothèque de classes séparé. Après avoir essayé et échoué tout ce qui précède dans la console du gestionnaire de paquets. J’ai utilisé l’invite de commande, et cela a fonctionné! Bizarre. Cependant, le crédit va à cet article . Et si vous utilisez un projet de bibliothèque de classes séparé, voici votre solution.

Sous Visual Studio 2017, je devais exécuter ces commandes depuis la console du gestionnaire de paquets

 install-package Microsoft.EntityFrameworkCore.SqlServer.Design Scaffold-DbContext "Server=.\sqlexpress;Database=MyDb;Trusted_Connection=True;MultipleActiveResultSets=true" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Model -Context "MyApp" 

Au lieu d’ouvrir une fenêtre de console distincte dans VS Package Manager Console, exécutez les commandes suivantes:

Ajouter la migration

Add-Migration

Supprimer la dernière migration

Remove-Migration

Avant qu’une migration ait été appliquée (ou pour appliquer la migration):

Update-Database

Lorsque la migration a été appliquée:

Update-Database -Migration

-Context

HTH

EDIT : Vous pourriez aussi avoir besoin de la classe suivante dans votre projet principal MVC:

 public class DbContextFactory : IDesignTimeDbContextFactory { public YourDbContext CreateDbContext(ssortingng[] args) { var builder = new DbContextOptionsBuilder(); builder.UseSqlServer("DefaultConnection", optionsBuilder => optionsBuilder.MigrationsAssembly(typeof(YourDbContext).GetTypeInfo().Assembly.GetName().Name)); return new YourDbContext(builder.Options); } } 

Dans la section des outils, ajoutez le code ci-dessous,

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

Ce format de code a résolu mon erreur.

Par défaut lors de l’ajout d’un NuGet Pkg, il sera ajouté en tant que PackageReference, c’est faux, donc modifiez-le manuellement

1- Editer le fichier .csproj

2- changement de “PackageReference”:

     to: