webentwicklung-frage-antwort-db.com.de

Der Begriff "Add-Migration" wird nicht erkannt

Ich verwende dieses MSDN Tutorial , um in VS2015 den Befehl PM> Add-Migration MyFirstMigration -context BloggingContext auszuführen, der gestern erfolgreich ausgeführt wurde, aber heute gibt es den folgenden Fehler, auf den auch andere Benutzer hier hinweisen. Ich habe sogar den Migrationsordner aus dem Lösungs-Explorer und die entsprechende Datenbank aus SQL Express 2014 on Win 8.1 gelöscht, aber denselben Fehler. Selbst wenn ich Add-Migration MyFirstMigration starte, erhalte ich dieselbe Fehlermeldung:

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

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

UPDATE

Die folgenden Befehle funktionieren gut aus dem Projektverzeichnis im Windows-Explorer, wenn das Befehlsfenster verwendet wird:

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

UPDATE 2a

Folgendes ist 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%" ]
  }
}
31
nam

Versuchen Sie die folgenden Schritte:

1) Öffnen Sie die project.json-Datei und Remove all Microsoft.EntityFrameworkCore.Tools-Referenzen aus den Abschnitten dependencies und tools.

2) Schließen Package Manager Console (PMC) und restart Visual Studio

3) Hinzufügen unter abhängigkeiten abschnitt:

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

4) Hinzufügen unter tools Abschnitt

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

5) Neustart erneut Visual Studio 2015

6) Öffnen Sie the PMC und geben Sie ein

Add-Migration $Your_First_Migration_Name$

Dies geschieht, weil die PMC die Tools beim Starten von Visual Studio erkennen.

36
Gianpolo

Stellen Sie sicher, dass auf Microsoft.EntityFrameworkCore.Tools im Abschnitt dependencies Ihres project.json verwiesen wird. NuGet lädt die Package Manager-Befehle nicht aus dem Abschnitt tools. (Siehe NuGet/Home # 3023 )

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

gleiches Problem ... von dong das Folgende behoben

1.) PM-Manager schließen 2.) Schließen Sie Visual Studio 3.) Öffnen Sie Visual Studio 4.) Öffnen Sie den PM-Manager

der Trick scheint darin zu liegen, PM Manager zu schließen, bevor VS geschlossen wird

9
Bhail

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

7
Josh

Was musste ich tun ...

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

2) Allgemeines Tab

3) Alle NuGet-Cache (s) löschen

4) Starten Sie Visual Studio neu

5

Ich hatte dieses Problem in Visual Studio 2013. Ich habe NuGet Package Manager erneut installiert:

https://marketplace.visualstudio.com/items?itemName=NuGetTeam.NuGetPackageManagerforVisualStudio2013

5
David Sopko

Sie müssen wissen, was Ihre Entity-Framework-Version ist . Danach müssen Sie project.json überprüfen und diese Abschnitte kontrollieren:

In Abhängigkeiten

prüfen:

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

Diese Abteilung:

"version": "1.0.0-preview2-final",

ist mit der Version Ihres Entity-Framework verwandt und Sie müssen dies ändern.

Danach ist der zweite Abschnitt von proj.json hier. In Tools von JSON haben Sie:

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

Auch dieser Teil des Codes steht in Zusammenhang mit Ihrem Entity-Framework und dem letzten Teil des Codes im Abschnitt Dependencies .

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

5

Versuchen Sie es einfach mit 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 könnte anders sein. Es hängt davon ab, was Sie in Ihrem Projekt verwenden.

4
trueboroda

Es ist so einfach.

Installieren Sie einfach das Microsoft.EntityFrameworkCore.Tools-Paket von nuget:

Installationspaket Microsoft.EntityFrameworkCore.Tools -Version 2.1.3

Sie können diesen Link auch verwenden, um die neueste Version zu installieren: Nuget-Paketlink

2

Ich hatte das gleiche Problem und stellte fest, dass es sich bei der Lösungsdatei um ein Problem bei der Versionierung von Visual Studio handelte.

Ich habe gezielt: 

VisualStudioVersion = 14.0.25123.0

Aber ich musste zielen: 

VisualStudioVersion = 14.0.25420.1

Nachdem Sie diese Änderung direkt in der Lösungsdatei vorgenommen haben, arbeiten die EF Core-Cmdlets in der Package Manager Console.

2
Joel Waymack

Ich bin auf die gleiche Ausgabe gestoßen. Die meisten meiner Projekte hatten das gleiche bei Werkzeugen.

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

Dies funktionierte gut für alle außer einem Projekt. Ich habe den Eintrag in Tools geändert

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

Und dann lief dotnet restore. Nachdem die Wiederherstellung abgeschlossen war, funktionierte Add-Migration normal.

2
smulholland2

Ich hatte dieses Problem und keine der vorherigen Lösungen hat mir geholfen. Mein Problem war eigentlich auf eine veraltete Version von Powershell auf meinem Windows 7-Rechner zurückzuführen - nachdem ich auf Powershell 5 aktualisiert hatte, begann es zu funktionieren.

1
Lee Cordell

Gehen Sie zur Paket-Manager-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

1
Shivendra

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

1) Upgrade meiner Power Shell von Version 2 auf 3

2) Schließen Sie die PM Konsole

3) Visual Studio neu gestartet

4) Führen Sie den folgenden Befehl in PM Console .__ aus. dotnet restore

5) Add-Migration InitialMigration

Es funktionierte !!!

1
Karthik

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

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

Zusammenfassend benötigen Sie nun einen Verweis auf EntityFrameWorkCore.Tools.DotNet im Abschnitt "Tools" wie unten beschrieben

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

Ich habe auch eine funktionierende project.json-Datei für den Fall, dass 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%" ]
  }
}
0
Francis

Ich habe alles versucht und kein Glück. Ich habe das neueste .net core 2.0-Paket heruntergeladen und die Befehle erneut ausgeführt.

0
Tyrone Moodley