Package Manager Console Enable-Migrations CommandNotFoundException nur in einem bestimmten VS-Projekt


122

Ich habe versucht, den Befehl 'Enable-Migrations' in einem neuen Projekt auszuführen, und habe die folgende Meldung erhalten:

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

Aber in allen anderen Projekten läuft der Befehl einwandfrei.

Warum passiert dies?

Übrigens verwende ich VS2010 Professional SP1

BEARBEITEN: Ich habe mit dem Befehl Install-Package EntityFramework -IncludePrerelease neu installiert und das Problem ist behoben .


2
Hallo, bitte fügen Sie Ihre Lösung als Antwort hinzu und markieren Sie sie als akzeptiert (was Sie 2 Tage später tun können), damit sie nicht als unbeantwortete Frage angezeigt wird.
Gert Arnold

1
Ich habe genau das gleiche Problem. Aber keines der Dinge in diesem Thread scheint zu funktionieren. Haben Sie das gesamte Visual Studio neu installiert oder haben Sie diesen Befehl einfach ausgeführt?
ObedMarsh

Ich habe einfach den Befehl ausgeführt ...
Eduardo Brites

2
Leider sind die Ergebnisse dieses Befehls für mich nur "'EntityFramework 6.1.0' bereits installiert". und es gibt immer noch keine Add-Migration oder Enable-Migrationen als gültige Befehle.
Mir

Ich erhalte das Install-Paket: Das Paket 'EntityFramework' konnte nicht gefunden werden. wenn ich Ihre Lösung versuche
Naguib Ihab

Antworten:


85

Das einfache Neustarten von Visual Studio hat für mich funktioniert. Keine Notwendigkeit, Pakete usw. zu installieren.


8
Das Neustarten von VS hat auch bei mir funktioniert. Ich bin froh, dass ich dies versucht habe, bevor ich versucht habe, das EntityFramework
SM3RKY

5
Der Neustart funktionierte für Visual Studio 2015. Es ist nicht erforderlich, Pakete zu installieren.
Jonas

5
Ein Hinweis - Ich habe dieses Problem jedes Mal, wenn ich meine Pakete installieren muss (wie ein neuer Repo-Pull). Es sieht so aus, als müsste VS neu gestartet werden, bevor die PM ordnungsgemäß mit den neuen Paketen initialisiert wird (VS Community 2015 Update 1)
Jono

2
Ein neuer Repo Pull hat das auch für mich verursacht. Neustart behoben. (VS Enterprise 2015 Update 2).
Mike Rouse

84

Ich habe mit dem Befehl neu installiert: Install-Package EntityFramework -IncludePrerelease und das Problem ist behoben.


13
Ich baute meine Lösung und schloss und öffnete VS 2013 und es funktionierte
Luke

Beachten Sie, dass EntityFrameworknur .net Framework 4.0 und 4.5 unterstützt werden. Wenn Sie also .net Framework 4.6 oder höher verwenden, funktioniert dies nicht.
Tân

1
@ TânNguyễn - was ist das? Mein EntityFramework 6.1.3 NuGet funktioniert gut in meinem 4.6.x-Projekt
bkwdesign

Neustart hat es nicht für mich getan, aber das hat es getan.
Robbpriestley

29

Dieses Problem tritt auf, weil Entity Framework nicht installiert ist. Bitte installieren Sie Entity Framework mit dem folgenden Befehl.

Install-Package EntityFramework -IncludePrerelease

Wählen Sie nach der Installation das Projekt in der Dropdown-Liste Standardprojekt der Paketverwaltungskonsole aus.

Stellen Sie sicher, dass mindestens eine Klasse in Ihrem Projekt vom Datenkontext erbt. Andernfalls verwenden Sie die folgende Klasse:

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

Wenn wir dies nicht tun, erhalten wir einen weiteren Fehler:

No context type was found in the assembly

Nachdem Sie diese Dinge erledigt haben, können Sie ausführen

enable-migrations

Hat für mich gearbeitet. Vielen Dank.
Najeeb

Arbeitete heute für mich mit VS 2019.
Perezdr

17

Das Neustarten von Visual Studio mit Administratorrechten hat das Problem für mich behoben.


13

Stellen Sie sicher, dass Sie Visual Studio als Administrator ausführen.


1
Ich habe VS als Administrator ausgeführt. Zu der Zeit wusste ich nicht, dass wir das Paket auf jedem Projekt installieren müssen.
Eduardo Brites

12

Ich hatte das gleiche Problem mit VS 2019 Preview, .Net Core und EntityFramework Core.

Es stellte sich heraus, dass ich über NuGet Microsoft.EntityFrameworkCore.Toolsund installieren musste Microsoft.EntityFrameworkCore.Design. Sobald das erledigt war, funktionierte es wie ein Zauber.


10

Zuerst "Install-Package EntityFramework -IncludePrerelease" und dann Visual Studio als Administrator neu starten arbeiteten für mich zusammen.


3

In Visual Studio 2012 hatte ich den gleichen Fehler. Musste NuGet deinstallieren (Extras> Erweiterungen und Updates> Installiert> Alle: NuGet Package Manager: Schaltfläche Deinstallieren). Dann Visual Studio geschlossen. Öffnen Sie dann Visual Studio erneut und installieren Sie NuGet neu (Extras> Erweiterungen und Updates> Online> Visual Studio-Galerie: NuGet Package Manager: Schaltfläche Herunterladen). Klicken Sie dann in den folgenden Fenstern auf die Schaltfläche Installieren und dann auf die Schaltfläche Schließen. Schließen Sie dann Visual Studio und öffnen Sie es erneut.


Dies hat bei mir funktioniert. Ich denke, es ist eine bessere Option, als ein Upgrade auf die Vorabversion zu erzwingen.
OverMars

2

Was dieses Symptom für mich (VS2013) behoben hat, ist die Deinstallation und anschließende Neuinstallation des EF-Pakets mit Nuget. Der Unterschied in der csproj-Datei hat dies geändert ...

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

...das mögen...

<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>

Ich verstehe noch nicht ganz warum, aber es hat zumindest funktioniert.


Ich hatte Probleme mit der Add-Migration / Update-Datenbank usw. Ich habe alle möglichen Lösungen ausprobiert, aber obwohl ich sicher bin, dass ich bereits versucht habe, EF zu deinstallieren und neu zu installieren, hat es nicht funktioniert. Bis jetzt, als es geschah. Dies ist nicht das erste Mal, dass ich Probleme mit EF-Paketen habe. :(
GeoffM

2

In .NET Core konnte ich die gleiche Auflösung wie in der akzeptierten Antwort beschrieben erreichen, indem ich in der Paketmanagerkonsole Folgendes eingab:

Install-Package EntityFramework.Core -Pre

2

Ich hatte das gleiche Problem und habe den größten Teil der von anderen Leuten bereitgestellten Lösung ausprobiert, aber es hat bei mir mit den folgenden Schritten funktioniert. Ich habe VS 2017.

Schritte:

Install-Package EntityFramework -IncludePrerelease

Erstellen Sie dann eine Klasse als

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

und bei der letzten Ausführung

Enable-Migrations -EnableAutomaticMigrations

Was bei mir nicht funktioniert hat:

: VS neu starten.

: nur Befehl "Enable-Migrations", der ohne -EnableAutomaticMigrations ist.

: Wiederherstellen oder Aktualisieren von Nuget Package Manager.

Mein ursprünglicher Fehler am Anfang war

/ * Der Begriff "Aktivierung aktivieren" wird nicht als Name eines Cmdlets, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder wenn ein Pfad enthalten war, überprüfen Sie, ob der Pfad korrekt ist, und versuchen Sie es erneut. In Zeile: 1 Zeichen: 1 + Aktivierung-Migration + ~~~~~~~~~~~~~~~~ ~~ + CategoryInfo: ObjectNotFound: (enable-migration: String) [], CommandNotFoundException * /


1

Ich hatte das gleiche Problem und stellte fest, dass es an einigen Zeichen im Projektpfad liegt, wie [oder] ich korrigiere den Projektpfad und es hat gut funktioniert!


1

Enable-Migrations -EnableAutomaticMigrations


1
Nachdem Sie mehrere Lösungen ausprobiert haben, funktioniert Ihre Lösung gut für mich.
Nguyenhoai890

Arbeitete für mich in Visual Studio Community 2015. Danke (Alle anderen Lösungen sind in meinem Fall fehlgeschlagen)
fedeteka

1

Da ich bereits einen Migrationsordner hatte, habe ich Visual Studio neu gestartet und Update-Database -verbose in der Paketmanagerkonsole ausgeführt. Das hat bei mir funktioniert


1

Ich habe alle oben genannten Vorschläge ausprobiert, aber nichts hat bei mir funktioniert, dann habe ich aktualisiert Nuget Package Managerund es hat funktioniert.


1
  1. Installieren Sie das Entity-Framework mit dem folgenden Befehl im aktuellen Projekt: PM> Install-Package EntityFramework -IncludePrerelease

  2. Fügen Sie eine Klasse "MyDBContext" in den Modellordner ein, wie unten angegeben:

    öffentliche Klasse MyDBContext: DbContext {public MyDBContext () {}}

  3. Aktivieren Sie nun Migrationen für das aktuelle Projekt mit dem folgenden Befehl: PM> enable-migrations


1

Als Administrator ausführen vs = >> open Öffnen Sie das Projekt

-> On the Package manager Console

Enable-migration
add-migration migrationName
update-database

0

Versuchen Sie in VS 2013, UPDATE 1 (RC1) zu installieren, und das Problem ist behoben.


0

Ich hatte mehrere Projekte in der Lösung, aber ich hatte das richtige Standardprojekt eingestellt, also dachte ich, dass es funktionieren sollte.

Am Ende musste ich die -StartupProject MyProjectNameOption zum Befehl hinzufügen


0

Keine dieser Lösungen hat bei mir funktioniert. Meine Lösung war zu löschen packages/EntityFramework.6.1.3undRestore NuGet Packages

Ich bemerkte, dass packages/EntityFramework.6.1.3/tools/EntityFramework.psd1das fehlte, also war dies eine wahrscheinliche Ursache. Wie es überhaupt entfernt wurde, obwohl ich keine Ahnung habe.


0

Überprüfen Sie, ob der Konfigurationsabschnitt "entityFramework" vorhanden und in Ihrer .config-Datei beschrieben ist

<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

Überprüfen Sie die Version des Entity Framework.

Wenn es 6.3 ist, stufen Sie es auf 6.2 herunter und es sollte gut funktionieren


2
Bitte erläutern Sie dies. Warum sollte jemand die installierte Bibliotheksversion herunterstufen, um dieses Problem zu beheben?
andrensairr

0

Ich hatte gerade das gleiche Problem im asp.net-Kern VS2019

Dies löste es:

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

Vergessen Sie nicht, das Standardprojekt in der Package Manager-Konsole für Ihr Datenbankprojekt festzulegen, falls es sich unterscheidet.

Während der Ausführung der Migrationen scheint auch das Standardprojekt eine Rolle zu spielen. In einem späteren Schritt half es, dies in meinem Hauptstartprojekt (nicht im EF-Datenbankprojekt) zu installieren:

Install-Package Microsoft.EntityFrameworkCore.Design

Ich glaube nicht, dass es vor 8 Jahren einen .net-Kern gibt.
Nach dem

0

Wenn Sie ein MVC-Webprojekt erstellen Sie sollten beim Erstellen des Projekts die Option Authentifizierung auswählen. Standardmäßig ist nicht ausgewählt. Geben Sie hier die Bildbeschreibung ein


0

Downgrade auf 6.2 hat mir geholfen.
.NET Framework Version 4.6.1
Projekt im alten Format (nicht .NET Standard)
Visual Studio sollte für die Erstmigration mit Administratorrechten geöffnet sein.
Ich denke, EF mit Version über 6.2 erfordert das neueste .NET Framework.


-4

Überprüfen Sie, ob das Projekt im Projektmappen-Explorer geöffnet ist.

Dies könnte die Ursache Ihres Problems sein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.