Package Manager Console Enable-Migrations CommandNotFoundException uniquement dans un projet VS spécifique


122

J'ai essayé d'exécuter la commande 'Enable-Migrations' dans un nouveau projet et j'ai reçu le message:

PM> Enable-Migrations
The term 'Enable-Migrations' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verif
y that the path is correct and try again.
At line:1 char:18
+ Enable-Migrations <<<< 
    + CategoryInfo          : ObjectNotFound: (Enable-Migrations:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Mais dans tous les autres projets, la commande fonctionne très bien.

Pourquoi cela arrive-t-il?

BTW, j'utilise VS2010 Professional SP1

EDIT: J'ai réinstallé avec la commande: Install-Package EntityFramework -IncludePrerelease et le problème a disparu.


2
Bonjour, veuillez ajouter votre solution en tant que réponse et la marquer comme acceptée (ce que vous pouvez faire 2 jours plus tard), afin qu'elle ne s'affiche pas comme question sans réponse.
Gert Arnold

1
J'ai exactement le même problème. Mais aucune des choses de ce fil ne semble fonctionner. Avez-vous réinstallé l'ensemble de Visual Studio ou avez-vous simplement exécuté cette commande?
ObedMarsh

J'ai simplement exécuté la commande ...
Eduardo Brites

2
Malheureusement, les résultats de cette commande pour moi sont simplement "'EntityFramework 6.1.0' déjà installé." et il n'a toujours pas add-migration ou enable-migrations comme commandes valides.
Mir

Je reçois le package d'installation: impossible de trouver le package 'EntityFramework'. quand j'essaye votre solution
Naguib Ihab

Réponses:


85

Le simple fait de redémarrer Visual Studio a fonctionné pour moi. Pas besoin d'installer des packages, etc.


8
Le redémarrage de VS a également fonctionné pour moi, heureux d'avoir essayé cela avant d'essayer de réinstaller EntityFramework
SM3RKY

5
Le redémarrage a fonctionné pour Visual Studio 2015. Pas besoin d'installer des packages.
jonas

5
Une note - J'ai ce problème à chaque fois que je dois installer mes packages (comme un nouveau repo pull). On dirait que VS doit redémarrer avant que le PM ne soit initialisé correctement avec les nouveaux packages (VS Community 2015 Update 1)
Jono

2
Le nouveau repo pull a également causé cela pour moi. Le redémarrage l'a corrigé. (VS Enterprise 2015 mise à jour 2).
Mike Rouse

84

J'ai réinstallé avec la commande: Install-Package EntityFramework -IncludePrerelease et le problème a disparu.


13
J'ai construit ma solution, puis fermé et rouvert VS 2013 et cela a fonctionné
Luke

Notez que EntityFrameworkne prend en charge que .net framework 4.0 et 4.5. Donc, si vous utilisez .net framework 4.6 ou supérieur, cela ne fonctionne pas.
Tân

1
@ TânNguyễn - qu'est-ce que c'est? mon EntityFramework 6.1.3 NuGet fonctionne correctement dans mon projet
4.6.x

Redémarrer ne l'a pas fait pour moi, mais c'est le cas.
robbpriestley

29

Ce problème se produit car Entity Framework n'est pas installé. Veuillez installer Entity Framework à l'aide de la commande ci-dessous.

Install-Package EntityFramework -IncludePrerelease

Une fois installé, choisissez le projet dans la liste déroulante du projet par défaut de la console du gestionnaire de packages.

Assurez-vous qu'au moins une classe de votre projet hérite du contexte de données, sinon utilisez la classe ci-dessous:

public class MyDbContext : DbContext
    {
        public MyDbContext()
        {
        }
    }

Si nous ne le faisons pas, nous obtiendrons une autre erreur:

No context type was found in the assembly

Après avoir terminé ces choses, vous pouvez exécuter

enable-migrations

A travaillé pour moi. Merci.
Najeeb

A travaillé pour moi aujourd'hui avec VS 2019.
perezdr

17

Le redémarrage de Visual Studio avec les privilèges d' administrateur a résolu le problème pour moi.


13

Assurez-vous que vous exécutez Visual Studio en tant qu'administrateur.


1
J'exécutais VS en tant qu'administrateur. À l'époque, je ne savais pas que nous devions installer le package sur chaque projet.
Eduardo Brites

12

J'ai eu le même problème avec VS 2019 Preview, .Net Core et EntityFramework Core.

Il s'avère que j'ai dû installer via NuGet Microsoft.EntityFrameworkCore.Toolset Microsoft.EntityFrameworkCore.Design. Une fois que cela a été fait, cela a fonctionné comme un charme.


10

Tout d'abord «Install-Package EntityFramework -IncludePrerelease», puis le redémarrage de Visual Studio en tant qu'administrateur a fonctionné pour moi ensemble.


3

Dans Visual Studio 2012, j'ai eu la même erreur. Dû désinstaller NuGet (Outils> Extensions et mises à jour> Installé> Tout: Gestionnaire de package NuGet: bouton Désinstaller). Puis fermé Visual Studio. Ensuite, a rouvert Visual Studio et réinstallé NuGet (Outils> Extensions et mises à jour> En ligne> Galerie Visual Studio: Gestionnaire de package NuGet: bouton Télécharger). Puis dans les fenêtres suivantes: cliquez sur le bouton Installer, puis sur le bouton Fermer. Puis fermez et rouvrez Visual Studio.


Cela a fonctionné pour moi, je pense que c'est une meilleure option que de forcer une mise à niveau vers la pré-version.
OverMars

2

Ce qui a résolu ce problème pour moi (VS2013) est la désinstallation puis la réinstallation du package EF avec Nuget. La différence dans le fichier csproj a changé cela ...

<Reference Include="EntityFramework">
  <HintPath>..\packages\EntityFramework.6.1.1\lib\net45\EntityFramework.dll</HintPath>
</Reference>

... dans ce ...

<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\EntityFramework.6.1.1\lib\net45\EntityFramework.dll</HintPath>
</Reference>

Je ne comprends pas encore pleinement pourquoi, mais cela a au moins fonctionné.


J'ai eu des problèmes avec add-migration / update-database, etc. J'ai essayé toutes les solutions, mais bien que je sois sûr que j'ai déjà essayé de désinstaller et de réinstaller EF, cela n'a pas fonctionné. Jusqu'à maintenant quand c'était le cas. Ce n'est pas la première fois que j'ai des problèmes avec les packages EF. :(
GeoffM

2

Dans .NET Core, j'ai pu atteindre la même résolution que celle décrite dans la réponse acceptée, en entrant ce qui suit dans la console du gestionnaire de packages:

Install-Package EntityFramework.Core -Pre

2

J'ai eu le même problème et j'ai essayé la plupart des solutions fournies par d'autres personnes, mais cela a fonctionné pour moi avec les étapes ci-dessous. J'ai VS 2017.

Pas:

Install-Package EntityFramework -IncludePrerelease

puis créez une classe comme

public class MyDBContext : DbContext { public MyDBContext() { } }

et à la dernière exécution

Enable-Migrations -EnableAutomaticMigrations

Ce qui n'a pas fonctionné pour moi:

: Redémarrage de VS.

: uniquement la commande "Enable-Migrations", qui est sans -EnableAutomaticMigrations.

: restauration ou mise à jour du gestionnaire de packages Nuget.

Mon erreur initiale au début était

/ * Le terme «enable-migration» n'est pas reconnu comme le nom d'une applet de commande, d'une fonction, d'un fichier de script ou d'un programme utilisable. Vérifiez l'orthographe du nom, ou si un chemin a été inclus, vérifiez que le chemin est correct et réessayez. À la ligne: 1 char: 1 + enable-migration + ~~~~~~~~~~~~~~ ~~ + CategoryInfo: ObjectNotFound: (enable-migration: String) [], CommandNotFoundException * /


1

J'ai eu le même problème et j'ai trouvé que c'était à cause de certains caractères dans le chemin du projet comme [ou] je corrige le chemin du projet et cela a bien fonctionné!


1

Enable-Migrations -EnableAutomaticMigrations


1
Après avoir essayé plusieurs solutions, votre solution fonctionne bien pour moi.
nguyenhoai890

A travaillé pour moi sur Visual Studio Community 2015. Merci (Toutes les autres solutions ont échoué sur mon cas)
fedeteka

1

Comme j'avais déjà un dossier de migrations, j'ai redémarré Visual Studio et exécuté Update-Database -verbose dans la console du gestionnaire de packages. Cela a fonctionné pour moi


1

J'ai essayé toutes les suggestions ci-dessus mais rien n'a fonctionné pour moi, puis j'ai mis à jour Nuget Package Manageret cela a fonctionné.


1
  1. Installez Entity Framework dans le projet actuel à l'aide de la commande ci-dessous: PM> Install-Package EntityFramework -IncludePrerelease

  2. Ajoutez une classe "MyDBContext" dans le dossier Model comme indiqué ci-dessous:

    classe publique MyDBContext: DbContext {public MyDBContext () {}}

  3. Activez maintenant les migrations pour le projet actuel avec la commande ci-dessous: PM> enable-migrations


1

exécuter en tant qu'administrateur vs = >> ouvrir Ouvrir le projet

-> On the Package manager Console

Enable-migration
add-migration migrationName
update-database

0

Dans VS 2013, essayez d'installer UPDATE 1 (RC1) et le problème est résolu.


0

J'avais plusieurs projets dans la solution, mais j'avais le bon jeu de projets par défaut, donc j'ai pensé que cela devrait fonctionner.

Au final, j'ai dû ajouter l' -StartupProject MyProjectNameoption à la commande


0

Aucune de ces solutions n'a fonctionné pour moi. Ma solution était de supprimer packages/EntityFramework.6.1.3etRestore NuGet Packages

J'ai remarqué qu'il packages/EntityFramework.6.1.3/tools/EntityFramework.psd1manquait, donc c'était une cause probable. Comment il a été supprimé en premier lieu, même si je n'en ai aucune idée.


0

Vérifiez si la section de configuration "entityFramework" existe et est décrite dans votre fichier .config

<configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/></configSections>

        <entityFramework>
            <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
            <providers>
                <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
            </providers>
        </entityFramework>

0

Vérifiez la version d'Entity Framework.

si c'est 6.3, rétrograder à 6.2 et cela devrait fonctionner très bien


2
Veuillez expliquer cela. Pourquoi quelqu'un devrait-il rétrograder la version de la bibliothèque installée juste pour résoudre ce problème?
andrensairr

0

J'ai juste eu le même problème dans asp.net core VS2019

Cela l'a résolu:

Install-Package Microsoft.EntityFrameworkCoreInstall-Package
Install-Package Microsoft.EntityFrameworkCore.Tools

N'oubliez pas de définir le projet par défaut dans la console du gestionnaire de package sur votre projet de base de données au cas où il serait différent.

Lors de l'exécution des migrations, le projet par défaut semble également jouer un rôle. À une étape ultérieure, cela a aidé à installer ceci dans mon projet de démarrage principal (pas le projet de base de données EF):

Install-Package Microsoft.EntityFrameworkCore.Design

Je ne pense pas qu'il y a 8 ans .net core existe.
AFetter le

0

si vous créez un projet Web MVC Vous devez sélectionner Authentification lors de la création du projet. par défaut n'est pas sélectionné. entrez la description de l'image ici


0

la rétrogradation à 6,2 m'a aidé.
.NET Framework version 4.6.1
Projet dans l'ancien format (non .NET Standard)
Visual Studio doit être ouvert avec des droits d'administrateur pour la migration initiale.
Je suppose que EF avec la version supérieure à 6.2 nécessite le dernier .NET Framework.


-4

Vérifiez si le projet est ouvert dans la fenêtre Explorateur de solutions.

Cela pourrait être la cause de votre problème.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.