Der Begriff "Add-Migration" wird nicht erkannt

102

Ich verwende dieses MSDN-Tutorial , um in VS2015 den Befehl auszuführen PM> Add-Migration MyFirstMigration -context BloggingContext, der gestern erfolgreich ausgeführt wurde, aber heute wird der folgende Fehler ausgegeben, auf den auch andere Benutzer hier hinweisen . Ich habe sogar den Migrationsordner aus dem Solution Explorer und die entsprechende Datenbank aus SQL Express 2014 on Win 8.1demselben Fehler gelöscht . Selbst wenn ich laufe, Add-Migration MyFirstMigrationerhalte ich den gleichen Fehler:

Add-Migration : The term 'Add-Migration' 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, verify that the path is correct and try again.
At line:1 char:1
+ Add-Migration MyFirstMigration -context BloggingContext
+ ~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Add-Migration:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Hinweis : Ich verwende die neueste Version von ASP.NET Core 1.0 und VS2015 - Update 3, die am 27. Juni 2016 veröffentlicht wurde.

AKTUALISIEREN

Die folgenden Befehle funktionieren im Projektverzeichnis im Windows Explorer einwandfrei, wenn Sie das Befehlsfenster verwenden:

> dotnet ef migrations add MyFirstMigration --context BloggingContext
> dotnet ef database update --context BloggingContext

UPDATE 2a

Es folgt die Datei project.json:

{
  "userSecretsId": "aspnet-ASPCore_RTM_CodeFirst_test-bef835d9-9831-41a8-bc3a-cd2f1477a880",

  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": {
      "version": "1.0.0",
      "type": "build"
    },
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    }
  },

  "tools": {
    "BundlerMinifier.Core": "2.0.238",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.Extensions.SecretManager.Tools": "1.0.0-preview2-final",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview2-final",
      "imports": [
        "portable-net45+win8"
      ]
    }
  },

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

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

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

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

  "scripts": {
    "prepublish": [ "bower install", "dotnet bundle" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}
nam
quelle
Bitte stopfen Sie keine Tags in den Titel
Tseng
schreibe bitte dein project.json Ich möchte deine Pakete sehen
Bassam Alugili
@BassamAlugili Gemäß Ihrer Anfrage habe ich in meinem Beitrag ein UPDATE 2 hinzugefügt, um den entsprechenden Abschnitt der Datei peoject.json hinzuzufügen. Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen
nam
Sie haben eine Antwort von @briceIam (EF-Team) erhalten. Ich denke, es wird funktionieren!
Bassam Alugili
@BassamAlugili Ich habe den gesamten Inhalt der Datei project.json im Abschnitt UPDATE 2 meines Beitrags hinzugefügt. Bitte beachten Sie meine Kommentare unter der Antwort von @bricelam. Was kann mir fehlen?
Nam

Antworten:

198

Es ist so einfach.

Installieren Sie einfach das Microsoft.EntityFrameworkCore.ToolsPaket von Nuget:

Installationspaket Microsoft.EntityFrameworkCore.Tools -Version 3.1.5

Über diesen Link können Sie auch die neueste Version installieren: Nuget-Paketlink

Nasir Jafarzadeh
quelle
Ich habe Version 2.2.6 installiert, da ich Visual Studio 2017 noch verwende.
BluE
Vielen Dank, dies ist der häufigste Fehler, den jeder macht
Nitesh Shaw
Ich musste auch Visual Studio
Liviu Sosu
47

Versuchen Sie die folgenden Schritte:

1) Öffnen Sie die project.jsonDatei und entfernen Sie alle Microsoft.EntityFrameworkCore.Tools-Referenzen aus den Abschnitten zu Abhängigkeiten und Tools .

2) Schließen Sie die Package Manager Console ( PMC ) und starten Sie Visual Studio neu

3) Fügen Sie unter Abhängigkeiten hinzu :

 "Microsoft.EntityFrameworkCore.Tools": {
  "version": "1.0.0-preview2-final",
  "type": "build"
 }

4) In unter Tools Abschnitt

"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"

5) Starten Sie Visual Studio 2015 erneut

6) Öffnen Sie das PMC und geben Sie ein

Add-Migration $Your_First_Migration_Name$

Dies liegt daran, dass die PMC die Tools erkennt, wenn Visual Studio gestartet wird.

Gianpolo
quelle
5
Ich kann kaum eine Stunde Codierung auf VS2015 überstehen, ohne dass etwas neu gestartet / neu installiert werden muss ...
Ryan Murphy
35

Stellen Sie sicher, dass Microsoft.EntityFrameworkCore.Toolsim dependenciesAbschnitt Ihres project.json. NuGet lädt die Package Manager-Befehle nicht aus dem toolsAbschnitt. (Siehe NuGet / Home # 3023 )

{
  "dependencies": {
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    }
  }
}
Bricelam
quelle
2
Ich habe den gesamten Inhalt der Datei project.json in UPDATE 2 meines Beitrags kopiert. Der Microsoft.EntityFrameworkCore.ToolsAbschnitt befindet sich ebenfalls innerhalb der Abhängigkeiten. Die Befehle Add-Migrationund Update-Database, wie im Tutorial beschrieben, funktionierten am Abend zuvor. Aber als ich sie am nächsten Morgen versuchte, nachdem ich kleinere Änderungen an meinem Modell vorgenommen und diese Befehle erneut versucht hatte, gaben sie die in meinem Beitrag beschriebene Fehlermeldung aus. Ich habe sogar den Migrationsordner und die entsprechende Datenbank vom SQL Server gelöscht, aber nach dem Ausführen dieser Befehle wurde dieselbe Fehlermeldung angezeigt. Was kann mir fehlen?
Nam
Ich habe auch diese Symptome. Ich verwende Visual Studio 2015 Update 3
Kolya_Net
Versuchen Sie , einen Fehler in NuGet mit reproduzierbaren Schritten und vielen Umgebungsinformationen einzureichen. Ich habe Probleme in diesem Bereich vor dem Team erwähnt, aber sie können sie nie wiedergeben.
Bricelam
1
Seltsam, dies löst mein Problem, wenn ich es entferne toolsund danach wieder hinzufüge. Wenn Sie es einfach nach verschieben, dependencieswird die folgende Fehlermeldung angezeigt: Dieser Befehl kann nicht ausgeführt werden, da 'Microsoft.EntityFrameworkCore.Tools' nicht im Projekt 'src \ <Ihr Projekt> installiert ist. Fügen Sie 'Microsoft.EntityFrameworkCore.Tools' zum Abschnitt 'tools' in project.json hinzu. Weitere Informationen finden Sie unter go.microsoft.com/fwlink/?LinkId=798221 .
Thorsten Westheider
Ich verwende VS2017 ASP.NET Core und hatte das gleiche Problem. Diese Antwort hat es auch gelöst!
Westerlund.io
14

gleiches Problem ... gelöst durch dong das folgende

1.) PM-Manager schließen 2.) Visual Studio schließen 3.) Visual Studio öffnen 4.) PM-Manager öffnen

Der Trick scheint darin zu bestehen, PM Manager vor dem Schließen von VS zu schließen

Bhail
quelle
Ja, das Neuladen von PM und VS ist eine Lösung. Es passiert, wenn wir ein Projekt in dem neuesten Visual Studio öffnen, das zuvor in einem älteren erstellt wurde. Durch das Öffnen eines solchen Codes versucht VS einige automatische Optimierungen. Diese Optimierungen können nur durch einen Neustart von PM ordnungsgemäß ausgeführt werden und VS.
Malik Khalil
9

Sie müssen wissen, was Ihre Entity-FrameworkVersion ist. Auch danach müssen Sie project.jsondiese Abschnitte überprüfen und kontrollieren:

In Abhängigkeiten

prüfen:

Microsoft.EntityFrameworkCore.Tools": {
  "version": "1.0.0-preview2-final",
  "type": "build"
},

Diese Abteilung:

"Version": "1.0.0-Vorschau2-Finale",

hängt mit deiner Version zusammen Entity-Frameworkund du musst dies damit ändern.

Danach ist der zweite Abschnitt von proj.jsonhier, In dem ToolsAbschnitt von haben JSONSie:

"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",

Auch dieser Teil des Codes bezieht sich auf Ihren Entity-Frameworkund den letzten Teil des Codes im Abschnitt Abhängigkeiten .

Hinweis: Nach diesen Problemen sollten Sie CMDVisual Studio schließen und neu starten.

AmirReza-Farahlagha
quelle
8

Ich hatte gerade auch dieses Problem. Ich habe VS2015 geschlossen und geöffnet und das Problem wurde "behoben" ...

Josh
quelle
6

Was ich tun musste ...

1) Tools -> Nuget Package Manager -> Package Manager-Einstellungen

2) Registerkarte Allgemein

3) Löschen Sie alle NuGet-Caches.

4) Starten Sie Visual Studio neu

Justin McConnell
quelle
5

Versuchen Sie einfach init Microsoft.EntityFrameworkCore.Tools. In PM ausführen

C:\Users\<username>\.nuget\packages\Microsoft.EntityFrameworkCore.Tools\1.0.0-preview2-final\tools\init.ps1.

Es hat mir bei dem gleichen Problem geholfen. Eine Version der Tools kann anders sein. Es hängt davon ab, was Sie in Ihrem Projekt verwenden.

Trueboroda
quelle
1
Für mich verwende ich einen relativen Pfad. \ Packets \ Microsoft.EntityFrameworkCore.Tools.1.1.0 \ tools \ init.ps1 Dies liegt daran, dass das aktuelle Verzeichnis des PM bereits das Lösungsverzeichnis ist, aber für mich ist das Tools-Paket Teil des Lösung. Persönlich denke ich, dass dies die beste Lösung ist, da es keinen Neustart, keine Bearbeitung und keine Neuinstallation gibt. Es dauert einen Augenblick und es funktioniert.
William Leader
4

Ich bin auf das gleiche Problem gestoßen. Die meisten meiner Projekte hatten das gleiche Werkzeug.

"tools": {
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
}

Dies funktionierte bis auf ein Projekt einwandfrei. Ich habe den Eintrag in tools in geändert

"tools": {
    "Microsoft.EntityFrameworkCore.Tools": {
    "version": "1.0.0-preview2-final",
    "type": "build"
  }
}

Und dann rannte dotnet restore. Nach Abschluss der Wiederherstellung Add-Migrationfunktionierte normal.

smulholland2
quelle
2

Ich hatte das gleiche Problem und stellte fest, dass es sich um ein Visual Studio-Versionsproblem in der Lösungsdatei handelte.

Ich zielte auf:

VisualStudioVersion = 14.0.25123.0

Aber ich musste zielen:

VisualStudioVersion = 14.0.25420.1

Nachdem diese Änderung direkt an der Lösungsdatei vorgenommen wurde, begannen EF Core-Cmdlets in der Package Manager-Konsole zu arbeiten.

Joel Waymack
quelle
Vielen Dank, dass Sie versucht haben zu helfen. Ich verwende eine Version 14.0.25421.03 Update 3, die noch höher ist als die, die Sie verwenden.
Nam
2

Dies sind die Schritte, die ich befolgt habe und die das Problem gelöst haben

1) Meine Power Shell wurde von Version 2 auf 3 aktualisiert

2) Die PM-Konsole geschlossen

3) Visual Studio neu gestartet

4) Führen Sie den folgenden Befehl in der PM Console-Dotnet-Wiederherstellung aus

5) Add-Migration InitialMigration

Es funktionierte !!!

Karthik
quelle
1

Ich hatte dieses Problem und keine der vorherigen Lösungen hat mir geholfen. Mein Problem war tatsächlich auf eine veraltete Version von Powershell auf meinem Windows 7-Computer zurückzuführen. Sobald ich auf Powershell 5 aktualisiert hatte, funktionierte es.

Lee Cordell
quelle
1

Gehen Sie zur Paketmanager-Konsole (in Visual Studio) und führen Sie den folgenden Befehl aus

C:\Users\<YOUR_USER>\.nuget\packages\Microsoft.EntityFrameworkCore.Tools\<YOUR_INSTALLED_VERSION>\tools\init.ps1

Shivendra
quelle
0

Ich denke, die Antwort muss 2017 aktualisiert werden, da die MS einige (wichtige) Änderungen vorgenommen haben, die hier detailliert beschrieben werden.

https://github.com/aspnet/EntityFramework/issues/7053

Zusammenfassend benötigen Sie jetzt einen Verweis auf EntityFrameWorkCore.Tools.DotNet im Abschnitt Tools (siehe unten)

"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0"

Ich habe auch eine funktionierende project.json-Datei unten veröffentlicht, falls jemand Probleme hat.

{
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.1",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
    "Microsoft.Extensions.Configuration.Json": "1.0.1",
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    }
  },

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

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

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

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

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

  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}
Francis
quelle
Wahrscheinlich müssen Sie Visual Studio auch erneut starten.
Francis
0

Ich habe versucht, all das zu tun und kein Glück. Ich habe das neueste .net Core 2.0-Paket heruntergeladen und die Befehle erneut ausgeführt, und es hat funktioniert.

Tyrone Moodley
quelle
Ist .net Kern 2.0 stabil jetzt so ein Projekt kann von aufgerüstet werden , 1.1.1um 2.0?
Nam
1
.NET Core 2.0 ist ab dem 14. August 2017 als endgültige Version verfügbar. blogs.msdn.microsoft.com/dotnet/2017/08/14/…
Tyrone Moodley
0

In meinem Fall habe ich die Abhängigkeit über Nuget hinzugefügt:

Microsoft.EntityFrameworkCore.Tools

Und dann über die Package Manager-Konsole ausführen:

add-migration Initial -Context "ContextName" -StartupProject "EntryProject.Name" -Project "MigrationProject.Name"
Erçin Dedeoğlu
quelle
0

Folgendes hat bei mir funktioniert: Klicken Sie in Visual Studio auf

Tools -> NuGet Package Manager -> Package Manager-Konsole

Geben Sie hier die Bildbeschreibung ein

Dann können Sie Add-Migrationzum Beispiel ausführen :

Add-Migration InitialCreate
Seif
quelle