No se reconoce el término "Agregar migración"

116

Estoy usando este tutorial de MSDN para ejecutar en VS2015 el comando PM> Add-Migration MyFirstMigration -context BloggingContextque se ejecutó ayer con éxito, pero hoy da el siguiente error que también han señalado otros usuarios aquí . Incluso eliminé la carpeta Migraciones del explorador de soluciones y la base de datos correspondiente del SQL Express 2014 on Win 8.1mismo error. Incluso si ejecuto Add-Migration MyFirstMigration, obtengo el mismo error:

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 : Estoy usando la última versión de ASP.NET Core 1.0 y VS2015 - Actualización 3 lanzada el 27 de junio de 2016.

ACTUALIZAR

Los siguientes comandos funcionan bien desde el directorio del proyecto en el explorador de Windows cuando se usa la ventana de comandos:

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

ACTUALIZACIÓN 2a

A continuación se muestra el archivo 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
fuente
No introduzca etiquetas en el título
Tseng
escribe por favor tu proyecto.json Quiero ver tus paquetes
Bassam Alugili
@BassamAlugili según su solicitud, agregué una ACTUALIZACIÓN 2 en mi publicación para agregar la sección relevante del archivo peoject.json. Por favor, avíseme si necesita más información
nam
Recibiste una respuesta de @briceIam (equipo EF) ¡Creo que funcionará!
Bassam Alugili
@BassamAlugili He agregado todo el contenido del archivo project.json en la sección ACTUALIZACIÓN 2 de mi publicación. Consulte mis comentarios en la respuesta de @bricelam. ¿Qué me puedo perder?
nam

Respuestas:

233

Es tan simple.

Simplemente instale el Microsoft.EntityFrameworkCore.Toolspaquete desde nuget:

Paquete de instalación Microsoft.EntityFrameworkCore.Tools -Versión 3.1.5

También puede utilizar este enlace para instalar la última versión: enlace del paquete Nuget

Comando .NET CLI:

dotnet add package Microsoft.EntityFrameworkCore.Tools
Nasir Jafarzadeh
fuente
Instalé la versión 2.2.6 ya que todavía estoy usando Visual Studio 2017.
BluE
Muchas gracias, este es el error común que todos cometen
Nitesh Shaw
1
También necesitaba reiniciar Visual Studio
Liviu Sosu
48

Pruebe los siguientes pasos:

1) Abra el project.jsonarchivo y elimine todas las referencias de Microsoft.EntityFrameworkCore.Tools de las secciones de dependencias y herramientas .

2) Cierre la consola del administrador de paquetes ( PMC ) y reinicie Visual Studio

3) Agregar en la sección de dependencias :

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

4) Agregar en la sección de herramientas

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

5) Reinicie de nuevo Visual Studio 2015

6) Abra el PMC y escriba

Add-Migration $Your_First_Migration_Name$

Esto sucede porque PMC reconoce las herramientas cuando se inicia Visual Studio.

Gianpolo
fuente
5
Apenas puedo pasar una hora de codificación en VS2015 sin que sea necesario reiniciar / reinstalar algo ...
Ryan Murphy
37

Asegúrese de que Microsoft.EntityFrameworkCore.Toolsse mencione en la dependenciessección de su project.json. NuGet no cargará los comandos del Administrador de paquetes de la toolssección. (Ver NuGet / Home # 3023 )

{
  "dependencies": {
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    }
  }
}
bricelam
fuente
2
He copiado todo el contenido del archivo project.json en la ACTUALIZACIÓN 2 de mi publicación. También Microsoft.EntityFrameworkCore.Toolsestá la sección de dependencias internas. Los comandos Add-Migrationy Update-Database, como se indica en el tutorial, funcionaron la noche anterior. Pero cuando los probé a la mañana siguiente después de hacer cambios menores en mi modelo y probé estos comandos nuevamente, me dieron el mensaje de error descrito en mi publicación. Incluso eliminé la carpeta de migración y la base de datos correspondiente del SQL Server, pero recibí el mismo mensaje de error después de ejecutar estos comandos. ¿Qué me puedo perder?
nam
También tengo estos síntomas. Estoy usando Visual Studio 2015 Update 3
Kolya_Net
Intente presentar un error en NuGet con pasos reproducibles y mucha información del entorno. He mencionado problemas en esta área ante el equipo, pero nunca pueden reprocharlos.
bricelam
1
Extraño, esto resuelve mi problema si lo elimino y lo vuelvo a toolsagregar después. Simplemente moverlo a dependenciesresultará en el siguiente mensaje de error: No se puede ejecutar este comando porque 'Microsoft.EntityFrameworkCore.Tools' no está instalado en el proyecto 'src \ <su proyecto>. Agregue 'Microsoft.EntityFrameworkCore.Tools' a la sección 'herramientas' en project.json. Consulte go.microsoft.com/fwlink/?LinkId=798221 para obtener más detalles.
Thorsten Westheider
Estoy usando VS2017 ASP.NET Core y tuve el mismo problema. ¡Esta respuesta también lo resolvió!
Westerlund.io
14

mismo problema ... resuelto por dong lo siguiente

1.) cerrar el administrador de pm 2.) cerrar Visual Studio 3.) Abrir Visual Studio 4.) Abrir el administrador de pm

parece que el truco es cerrar PM Manager antes de cerrar VS

Bhail
fuente
Sí, recargar PM y VS es una solución, sucede cuando abrimos el proyecto en el último estudio visual que se creó previamente en uno anterior. Al abrir dicho código, VS intenta algunos ajustes automáticos. Esos ajustes se pueden ver efectuados correctamente, solo reiniciando PM y VS.
Malik Khalil
9

Yo también tuve este problema. Cerré y abrí VS2015 y "solucionó" el problema ...

Josh
fuente
Acaba de suceder esto en la edición de la comunidad VS 2019.
Gabe
9

Tienes que saber cuál es tu Entity-Frameworkversión. Además, después de eso, debe verificar project.jsony controlar estas secciones:

En dependencias

cheque:

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

Esta sección:

"versión": "1.0.0-preview2-final",

está relacionado con la versión de tu Entity-Frameworky tienes que cambiar esto con eso.

Después de eso, la segunda sección del proj.jsonestá aquí, en la Toolssección de JSONusted tiene:

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

Además, esta parte del código está relacionada con su Entity-Frameworky la última parte del código en la sección Dependencias .

Nota: Después de hacer esto, debe cerrar CMDy reiniciar Visual Studio.

AmirReza-Farahlagha
fuente
6

Lo que tenía que hacer ...

1) Herramientas -> Administrador de paquetes Nuget -> Configuración del administrador de paquetes

2) Ficha General

3) Borrar todos los cachés de NuGet

4) Reinicie Visual Studio

Justin McConnell
fuente
5

Simplemente intente init Microsoft.EntityFrameworkCore.Tools. En PM ejecutar

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

Me ayudó con el mismo problema. Una versión de las herramientas puede ser diferente. Depende de lo que uses en tu proyecto.

trueboroda
fuente
1
Para mí, uso una ruta relativa. \ Packages \ Microsoft.EntityFrameworkCore.Tools.1.1.0 \ tools \ init.ps1 Esto se debe a que el directorio actual del PM ya es el directorio de la solución, pero para mí el paquete de herramientas es parte del Solución. Personalmente, creo que esta es la mejor solución, ya que no hay que reiniciar, editar ni reinstalar. Toma un instante y funciona.
William Leader
4

Me encontré con el mismo problema. La mayoría de mis proyectos tenían lo mismo en herramientas.

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

Esto funcionó bien en todos los proyectos menos uno. Cambié la entrada en herramientas a

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

Y luego corrió dotnet restore. Una vez finalizada la restauración, Add-Migrationfuncionó normalmente.

smulholland2
fuente
2

Tuve el mismo problema y descubrí que era un problema de control de versiones de Visual Studio en el archivo de solución.

Estaba apuntando:

VisualStudioVersion = 14.0.25123.0

Pero necesitaba apuntar:

VisualStudioVersion = 14.0.25420.1

Después de realizar ese cambio directamente en el archivo de la solución, los cmdlets de EF Core comenzaron a funcionar en la consola del Administrador de paquetes.

Joel Waymack
fuente
Gracias por intentar ayudar. Estoy usando una versión 14.0.25421.03 Update 3que es incluso superior a la que estás usando.
nam
2

Estos son los pasos que seguí y solucionó el problema

1) Actualicé mi Power Shell de la versión 2 a 3

2) Cerró la consola PM

3) Visual Studio reiniciado

4) Ejecutó el siguiente comando en la restauración de dotnet de la consola PM

5) Add-Migration InitialMigration

Funcionó !!!

Karthik
fuente
1

Tuve este problema y ninguna de las soluciones anteriores me ayudó. Mi problema en realidad se debió a una versión desactualizada de powershell en mi máquina con Windows 7; una vez que actualicé a powershell 5, comenzó a funcionar.

Lee Cordell
fuente
1

Vaya a la consola del administrador de paquetes (en Visual Studio) y ejecute el siguiente comando

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

Shivendra
fuente
0

Creo que la respuesta debe actualizarse en 2017, ya que MS ha realizado algunos cambios (importantes) que se detallan aquí.

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

Para resumir, ahora necesitará una referencia a EntityFrameWorkCore.Tools.DotNet en la sección de herramientas como se muestra a continuación

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

También he publicado un archivo project.json de trabajo a continuación en caso de que alguien tenga problemas.

{
  "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
fuente
Probablemente también necesitará reiniciar Visual Studio nuevamente.
Francis
0

Intenté hacer todo lo anterior y no tuve suerte. Descargué el último paquete .net core 2.0 y ejecuté los comandos nuevamente y funcionó.

Tyrone Moodley
fuente
¿Es estable .net core 2.0 ahora, por lo que un proyecto se puede actualizar de 1.1.1a 2.0?
nam
1
.NET Core 2.0 está disponible a partir de ayer 14 de agosto de 2017 como versión final. blogs.msdn.microsoft.com/dotnet/2017/08/14/…
Tyrone Moodley
0

En mi caso, agregué dependencia a través de Nuget:

Microsoft.EntityFrameworkCore.Tools

Y luego ejecutar a través de la Consola del Administrador de paquetes:

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

Esto es lo que funcionó para mí: Desde Visual Studio, haga clic en

Herramientas -> Administrador de paquetes NuGet -> Consola del administrador de paquetes

ingrese la descripción de la imagen aquí

Entonces puedes ejecutar Add-Migration, por ejemplo:

Add-Migration InitialCreate
Seif
fuente