O termo “Add-Migration” não é reconhecido

106

Estou usando este tutorial do MSDN para executar no VS2015 o comando PM> Add-Migration MyFirstMigration -context BloggingContextque foi executado com êxito ontem, mas hoje ele está apresentando o seguinte erro, que também é apontado por outros usuários aqui . Eu até excluí a pasta Migrations do Solution Explorer e o banco de dados correspondente do SQL Express 2014 on Win 8.1mesmo erro. Mesmo se eu executar Add-Migration MyFirstMigration, recebo o mesmo erro:

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

Observação : estou usando a versão mais recente do ASP.NET Core 1.0 e VS2015 - atualização 3 lançada em 27 de junho de 2016.

ATUALIZAR

Os comandos a seguir funcionam bem no diretório do projeto no Windows Explorer ao usar a janela de comando:

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

ATUALIZAÇÃO 2a

A seguir está o arquivo 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
fonte
Por favor, não coloque tags no título
Tseng
escreva por favor seu project.json Eu quero ver seus pacotes
Bassam Alugili
@BassamAlugili por sua solicitação, adicionei um UPDATE 2 em meu post para adicionar a seção relevante do arquivo peoject.json. Por favor, deixe-me saber se você precisar de mais informações
nam
Você recebeu uma resposta de @briceIam (equipe EF) Acho que vai funcionar!
Bassam Alugili
@BassamAlugili Eu adicionei todo o conteúdo do arquivo project.json na seção UPDATE 2 do meu post. Por favor, veja meus comentários na resposta de @bricelam. O que posso estar faltando?
nam

Respostas:

204

É tão simples.

Basta instalar o Microsoft.EntityFrameworkCore.Toolspacote do nuget:

Install-Package Microsoft.EntityFrameworkCore.Tools -Version 3.1.5

Você também pode usar este link para instalar a versão mais recente: link do pacote Nuget

Nasir Jafarzadeh
fonte
Instalei a versão 2.2.6 porque ainda estou usando o Visual Studio 2017.
BluE
Muito obrigado, este é o erro comum que todos
cometem
1
Também precisei reiniciar o Visual Studio
Liviu Sosu
47

Experimente os seguintes passos:

1) Abra o project.jsonarquivo e remova todas as referências Microsoft.EntityFrameworkCore.Tools das dependências e ferramentas seções de .

2) Feche o Package Manager Console ( PMC ) e reinicie o Visual Studio

3) Adicionar na seção de dependências :

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

4) Adicionar na seção de ferramentas

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

5) Reinicie o Visual Studio 2015

6) Abra o PMC e digite

Add-Migration $Your_First_Migration_Name$

Isso acontece porque o PMC reconhece as ferramentas quando o Visual Studio está iniciando.

Gianpolo
fonte
5
Mal consigo passar uma hora codificando no VS2015 sem que algo precise ser reiniciado / reinstalado ...
Ryan Murphy
36

Certifique-se de que Microsoft.EntityFrameworkCore.Toolsestá referenciado na dependenciesseção de seu project.json. O NuGet não carrega os comandos do gerenciador de pacotes da toolsseção. (Consulte NuGet / Home # 3023 )

{
  "dependencies": {
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    }
  }
}
bricelam
fonte
2
Copiei todo o conteúdo do arquivo project.json no UPDATE 2 do meu post. A Microsoft.EntityFrameworkCore.Toolsseção está dentro das dependências também. Os comandos Add-Migratione Update-Database, conforme instruído no tutorial, funcionaram na noite anterior. Mas quando eu os tentei na manhã seguinte, depois de fazer pequenas alterações em meu modelo, e tentei esses comandos novamente, eles deram a mensagem de erro descrita em minha postagem. Eu até excluí a pasta Migration e o banco de dados correspondente do SQL Server, mas recebi a mesma mensagem de erro após executar esses comandos. O que posso estar faltando?
nam
Eu também tenho esses sintomas. Estou usando a atualização 3 do Visual Studio 2015
Kolya_Net de
Tente registrar um bug no NuGet com etapas reproduzíveis e muitas informações do ambiente. Mencionei problemas nesta área antes da equipe, mas eles nunca conseguem reproduzi-los.
bricelam
1
Estranho, isso resolve meu problema se eu remover toolse adicionar novamente depois. Simplesmente movê-lo para dependenciesresultará na seguinte mensagem de erro: Não é possível executar este comando porque 'Microsoft.EntityFrameworkCore.Tools' não está instalado no projeto 'src \ <your project>. Adicione 'Microsoft.EntityFrameworkCore.Tools' à seção 'ferramentas' em project.json. Consulte go.microsoft.com/fwlink/?LinkId=798221 para obter mais detalhes.
Thorsten Westheider
Estou usando o VS2017 ASP.NET Core e tive o mesmo problema. Essa resposta também resolveu!
Westerlund.io
14

mesmo problema ... resolvido por dong o seguinte

1.) feche o gerenciador de pm 2.) feche o Visual Studio 3.) Abra o Visual Studio 4.) Abra o gerenciador de pm

parece que o truque é fechar o PM Manager antes de fechar o VS

Bhail
fonte
Sim, recarregar PM e VS é uma solução. Isso acontece quando abrimos o projeto no estúdio visual mais recente que foi criado anteriormente em um antigo. Ao abrir esse código, o VS tenta alguns ajustes automáticos. Esses ajustes podem ser vistos efetuados corretamente, apenas reiniciando o PM e VS.
Malik Khalil
9

Você tem que saber qual é a sua Entity-Frameworkversão. Depois disso, você também deve verificar project.jsone controlar estas seções:

Em Dependências

Verifica:

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

Esta seção:

"versão": "1.0.0-preview2-final",

está relacionado com a versão do seu Entity-Frameworke você tem que mudar isso com aquilo.

Depois disso, a segunda seção do proj.jsonestá aqui, na Toolsseção de JSONvocê tem:

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

Além disso, esta parte do código está relacionada com a sua Entity-Frameworke a última parte do código na seção Dependências .

Nota: Depois de fazer isso, você deve fechar CMDe reiniciar o Visual Studio.

AmirReza-Farahlagha
fonte
8

Eu também tive esse problema. Fechei e abri o VS2015 e ele "consertou" o problema ...

Josh
fonte
6

O que eu tive que fazer ...

1) Ferramentas -> Gerenciador de Pacotes Nuget -> Configurações do Gerenciador de Pacotes

2) Guia Geral

3) Limpar todos os cache (s) NuGet

4) Reinicie o Visual Studio

Justin McConnell
fonte
5

Experimente o init Microsoft.EntityFrameworkCore.Tools. Em PM execute

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

Isso me ajudou com o mesmo problema. Uma versão das ferramentas pode ser diferente. Depende do que você utiliza em seu projeto.

trueboroda
fonte
1
Para mim, eu uso um caminho relativo. \ Packages \ Microsoft.EntityFrameworkCore.Tools.1.1.0 \ tools \ init.ps1 Isso ocorre porque o diretório atual do PM já é o diretório de solução, mas para mim o pacote de ferramentas faz parte do Solução. Pessoalmente, acho que essa é a melhor solução, pois não há como reiniciar, editar, reinstalar. Demora um instante e funciona.
William Leader
4

Eu tive o mesmo problema. A maioria dos meus projetos tinha a mesma coisa em ferramentas.

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

Isso funcionou bem em todos os projetos, exceto um. Eu mudei a entrada em ferramentas para

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

E então correu dotnet restore. Após a restauração concluída, Add-Migrationfuncionou normalmente.

smulholland2
fonte
2

Eu tive o mesmo problema e descobri que era um problema de versão do Visual Studio no arquivo de solução.

Eu estava almejando:

VisualStudioVersion = 14.0.25123.0

Mas eu precisava atingir:

VisualStudioVersion = 14.0.25420.1

Depois de fazer essa alteração diretamente no arquivo de solução, os cmdlets EF Core começaram a trabalhar no console do gerenciador de pacotes.

Joel Waymack
fonte
Obrigado por tentar ajudar. Estou usando uma versão 14.0.25421.03 Update 3ainda superior à que você está usando.
nam
2

Estas são as etapas que segui e resolveu o problema

1) Atualizei meu Power shell da versão 2 para 3

2) Fechado o console PM

3) Reiniciou o Visual Studio

4) Execute o comando abaixo na restauração dotnet do Console PM

5) Add-Migration InitialMigration

Funcionou !!!

Karthik
fonte
1

Eu tive esse problema e nenhuma das soluções anteriores me ajudou. Meu problema era na verdade devido a uma versão desatualizada do PowerShell na minha máquina com Windows 7 - assim que atualizei para o PowerShell 5, ele começou a funcionar.

Lee Cordell
fonte
1

Vá para o console do gerenciador de pacotes (no visual studio) e execute o comando abaixo

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

Shivendra
fonte
0

Acho que a resposta precisa ser atualizada em 2017, já que a MS fez algumas mudanças (importantes) que são detalhadas aqui.

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

Para resumir, agora você precisará de uma referência a EntityFrameWorkCore.Tools.DotNet na seção Ferramentas conforme abaixo

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

Eu também postei um arquivo project.json funcional abaixo, caso alguém tenha 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
fonte
Provavelmente, você também precisará reiniciar o Visual Studio novamente.
Francisco
0

Tentei fazer tudo isso e sem sorte. Baixei o pacote .net core 2.0 mais recente, executei os comandos novamente e funcionou.

Tyrone Moodley
fonte
O .net core 2.0 está estável agora para que um projeto possa ser atualizado de 1.1.1para 2.0?
nam
1
O .NET Core 2.0 está disponível ontem, 14 de agosto de 2017, como versão final. blogs.msdn.microsoft.com/dotnet/2017/08/14/…
Tyrone Moodley de
0

No meu caso, adicionei dependência via Nuget:

Microsoft.EntityFrameworkCore.Tools

E, em seguida, execute por meio do Console do gerenciador de pacotes:

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

Isto é o que funcionou para mim: no Visual Studio, clique em

Ferramentas -> Gerenciador de Pacotes NuGet -> Console do Gerenciador de Pacotes

insira a descrição da imagem aqui

Então você pode executar Add-Migration, por exemplo:

Add-Migration InitialCreate
Seif
fonte