Il termine "Add-Migration" non è riconosciuto


116

Sto usando questo tutorial di MSDN per eseguire in VS2015 il comando PM> Add-Migration MyFirstMigration -context BloggingContextche è stato eseguito ieri con successo ma oggi dà il seguente errore che viene segnalato anche da altri utenti qui . Ho anche eliminato la cartella Migrations da Solution Explorer e il database corrispondente dallo SQL Express 2014 on Win 8.1stesso errore. Anche se corro Add-Migration MyFirstMigrationottengo lo stesso errore:

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

Nota : sto usando la versione più recente di ASP.NET Core 1.0 e VS2015 - Aggiornamento 3 rilasciato il 27 giugno 2016.

AGGIORNARE

I seguenti comandi funzionano correttamente dalla directory del progetto in Windows Explorer quando si utilizza la finestra di comando:

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

AGGIORNAMENTO 2a

Di seguito è riportato il file 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%" ]
  }
}

Si prega di non inserire tag nel titolo
Tseng

scrivi per favore il tuo progetto.json Voglio vedere i tuoi pacchetti
Bassam Alugili

@BassamAlugili per tua richiesta, ho aggiunto un AGGIORNAMENTO 2 nel mio post per aggiungere la sezione pertinente del file peoject.json. Per favore fatemi sapere se avete bisogno di maggiori informazioni
nam

Hai ricevuto una risposta da @briceIam (team EF) Penso che funzionerà!
Bassam Alugili

@BassamAlugili Ho aggiunto l'intero contenuto del file project.json nella sezione UPDATE 2 del mio post. Si prega di vedere i miei commenti sotto la risposta di @bricelam. Cosa potrei perdermi?
nam

Risposte:


233

È così semplice.

Basta installare il Microsoft.EntityFrameworkCore.Toolspacchetto da nuget:

Pacchetto di installazione Microsoft.EntityFrameworkCore.Tools -Version 3.1.5

È inoltre possibile utilizzare questo collegamento per installare l'ultima versione: collegamento al pacchetto Nuget

Comando .NET CLI:

dotnet add package Microsoft.EntityFrameworkCore.Tools

Ho installato la versione 2.2.6 poiché utilizzo ancora Visual Studio 2017.
BluE

Grazie mille, questo è l'errore comune che fanno tutti
Nitesh Shaw il

1
Avevo anche bisogno di riavviare Visual Studio
Liviu Sosu

48

Prova i seguenti passaggi:

1) Apri il project.jsonfile e rimuovi tutti i riferimenti Microsoft.EntityFrameworkCore.Tools dalle dipendenze e dalle sezioni degli strumenti .

2) Chiudi Package Manager Console ( PMC ) e riavvia Visual Studio

3) Aggiungi sotto la sezione dipendenze :

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

4) Aggiungi sotto la sezione strumenti

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

5) Riavvia nuovamente Visual Studio 2015

6) Apri il PMC e digita

Add-Migration $Your_First_Migration_Name$

Ciò accade perché il PMC riconosce gli strumenti all'avvio di Visual Studio.


5
Riesco a malapena a passare un'ora di programmazione su VS2015 senza che sia necessario riavviare / reinstallare qualcosa ...
Ryan Murphy

37

Assicurati che Microsoft.EntityFrameworkCore.Toolssia referenziato nella dependenciessezione del tuo project.json. NuGet non caricherà i comandi di Gestione pacchetti dalla toolssezione. (Vedere NuGet / Home # 3023 )

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

2
Ho copiato l'intero contenuto del file project.json nell'AGGIORNAMENTO 2 del mio post. Anche la Microsoft.EntityFrameworkCore.Toolssezione è dentro le dipendenze. I comandi Add-Migratione Update-Database, come indicato nel tutorial, hanno funzionato la sera prima. Ma quando li ho provati la mattina successiva dopo aver apportato piccole modifiche al mio modello e ho provato di nuovo questi comandi, hanno dato il messaggio di errore descritto nel mio post. Ho persino eliminato la cartella Migration e il database corrispondente da SQL Server, ma ho ricevuto lo stesso messaggio di errore dopo aver eseguito questi comandi. Cosa potrei perdermi?
nam

Ho anche questi sintomi. Sto usando Visual Studio 2015 Update 3
Kolya_Net

Prova a segnalare un bug su NuGet con passaggi riproducibili e molte informazioni sull'ambiente. Ho menzionato problemi in quest'area prima della squadra, ma non sono mai stati in grado di riprodurli.
bricelam

1
Strano, questo risolve il mio problema se lo rimuovo da toolse lo aggiungo di nuovo dopo. Semplicemente spostandolo in dependenciesverrà visualizzato il seguente messaggio di errore: Impossibile eseguire questo comando perché "Microsoft.EntityFrameworkCore.Tools" non è installato nel progetto "src \ <il tuo progetto>. Aggiungi "Microsoft.EntityFrameworkCore.Tools" alla sezione "strumenti" in project.json. Vedi go.microsoft.com/fwlink/?LinkId=798221 per maggiori dettagli.
Thorsten Westheider

Sto usando VS2017 ASP.NET Core e ho avuto lo stesso problema. Anche questa risposta lo ha risolto!
Westerlund.io

14

stesso problema ... risolto da dong quanto segue

1.) chiudi pm manager 2.) chiudi Visual Studio 3.) Apri Visual Studio 4.) Apri pm manager

sembra che il trucco sia chiudere PM Manager prima di chiudere VS


Sì, ricaricare PM e VS è una soluzione, accade quando apriamo un progetto nell'ultimo studio visivo che è stato precedentemente creato in uno più vecchio.Aprendo tale codice, VS prova alcune modifiche automatiche.Queste modifiche possono essere visualizzate correttamente, solo riavviando PM e VS.
Malik Khalil

9

Anch'io ho avuto questo problema. Ho chiuso e aperto VS2015 e il problema "risolto" ...


Era appena successo nell'edizione Community di VS 2019.
Gabe

9

Devi sapere qual è la tua Entity-Frameworkversione. Inoltre, devi controllare project.jsone controllare queste sezioni:

In dipendenze

dai un'occhiata:

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

Questa sezione:

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

è correlato alla tua versione Entity-Frameworke devi cambiarlo con quello.

Dopodiché la seconda sezione di proj.jsonè qui, nella Toolssezione di JSONte hai:

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

Anche questa parte di codice è correlata alla tua Entity-Frameworke ultima parte di codice nella sezione Dipendenze .

Nota: dopo aver eseguito questi problemi, dovresti chiudere CMDe riavviare Visual Studio.


6

Quello che dovevo fare ...

1) Strumenti -> Gestione pacchetti Nuget -> Impostazioni Gestione pacchetti

2) Scheda Generale

3) Cancella tutte le cache NuGet

4) Riavvia Visual Studio



5

Prova semplicemente init Microsoft.EntityFrameworkCore.Tools. In PM eseguire

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

Mi ha aiutato con lo stesso problema. Una versione degli strumenti potrebbe essere diversa. Dipende da ciò che usi nel tuo progetto.


1
Per me, utilizzo un percorso relativo. \ Packages \ Microsoft.EntityFrameworkCore.Tools.1.1.0 \ tools \ init.ps1 Questo perché la directory corrente del PM è già la directory della soluzione, ma per me il pacchetto Strumenti fa parte del Soluzione. Personalmente penso che questa sia la soluzione migliore poiché non c'è riavvio, modifica, reinstallazione. Ci vuole un istante e funziona.
William Leader

4

Mi sono imbattuto nello stesso problema. La maggior parte dei miei progetti aveva la stessa cosa negli strumenti.

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

Questo ha funzionato bene su tutti i progetti tranne uno. Ho cambiato la voce in strumenti in

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

E poi è corso dotnet restore. Dopo il ripristino completato, ha Add-Migrationfunzionato normalmente.


2

Ho avuto lo stesso problema e ho scoperto che si trattava di un problema di controllo delle versioni di Visual Studio nel file della soluzione.

Stavo prendendo di mira:

VisualStudioVersion = 14.0.25123.0

Ma dovevo mirare a:

VisualStudioVersion = 14.0.25420.1

Dopo aver apportato tale modifica direttamente al file Solution, i cmdlet di EF Core hanno iniziato a funzionare nella console di Gestione pacchetti.


Grazie per aver tentato di aiutare. Sto usando una versione 14.0.25421.03 Update 3addirittura superiore a quella che stai usando.
nam

2

Questi sono i passaggi che ho seguito e ha risolto il problema

1) Aggiornato il mio Power Shell dalla versione 2 alla 3

2) Chiuso la console PM

3) Visual Studio riavviato

4) Esegui il comando seguente in PM Console dotnet restore

5) Add-Migration InitialMigration

Ha funzionato !!!


1

Ho avuto questo problema e nessuna delle soluzioni precedenti mi ha aiutato. Il mio problema era in realtà dovuto a una versione obsoleta di PowerShell sulla mia macchina Windows 7: una volta aggiornato a PowerShell 5, ha iniziato a funzionare.


1

Vai alla console del gestore di pacchetti (in Visual Studio) ed esegui il comando seguente

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


0

Penso che la risposta debba essere aggiornata nel 2017, poiché gli Stati membri hanno apportato alcune modifiche (importanti) che sono descritte in dettaglio qui.

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

Per riassumere, ora avrai bisogno di un riferimento a EntityFrameWorkCore.Tools.DotNet nella sezione Strumenti come di seguito

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

Ho anche pubblicato un file project.json funzionante di seguito nel caso in cui qualcuno abbia problemi.

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

Probabilmente dovrai riavviare anche Visual Studio.
Francis


0

Nel mio caso ho aggiunto la dipendenza tramite Nuget:

Microsoft.EntityFrameworkCore.Tools

E poi esegui tramite la console di Gestione pacchetti:

add-migration Initial -Context "ContextName" -StartupProject "EntryProject.Name" -Project "MigrationProject.Name"

0

Questo è ciò che ha funzionato per me: da Visual Studio fare clic su

Strumenti -> Gestione pacchetti NuGet -> Console Gestione pacchetti

inserisci qui la descrizione dell'immagine

Quindi puoi eseguire Add-Migration, ad esempio:

Add-Migration InitialCreate
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.