术语“添加迁移”无法识别


115

我正在使用此MSDN教程在VS2015中运行该命令PM> Add-Migration MyFirstMigration -context BloggingContext,该命令昨天成功运行了,但今天却给出了以下错误,其他用户在这里也指出了该错误。我什至从解决方案资源管理器中删除了Migrations文件夹,并从SQL Express 2014 on Win 8.1相同的错误中删除了相应的数据库。即使我运行Add-Migration MyFirstMigration我也会遇到相同的错误:

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

注意:我正在使用最新版本的ASP.NET Core 1.0和VS2015-2016年6月27日发布的Update 3。

更新

使用命令窗口时,以下命令可从Windows资源管理器中的项目目录正常运行:

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

更新2a

以下是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%" ]
  }
}

请不要在标题中添加标签

请写您的project.json我想看一下您的软件包
Bassam Alugili

@BassamAlugili根据您的请求,我在帖子中添加了UPDATE 2,以添加peoject.json文件的相关部分。如果您需要更多信息,请告诉我
nam

您从@briceIam(EF团队)得到了答案,我认为它将有效!
巴萨姆·阿鲁吉利

@BassamAlugili我已在我的帖子的UPDATE 2部分中添加了project.json文件的全部内容。请在的回复下查看我的评论@bricelam。我可能会缺少什么?

Answers:


230

很简单

只需Microsoft.EntityFrameworkCore.Tools从nuget安装软件包:

安装包Microsoft.EntityFrameworkCore.Tools-版本3.1.5

您也可以使用此链接安装最新版本: Nuget软件包链接

.NET CLI命令:

dotnet add package Microsoft.EntityFrameworkCore.Tools

因为我仍在使用Visual Studio 2017
所以

非常感谢,这是每个人都常犯的错误
Nitesh Shaw

1
我还需要重新启动Visual Studio
Liviu Sosu

48

请尝试以下步骤:

1)打开project.json文件并从依赖项工具中删除所有Microsoft.EntityFrameworkCore.Tools引用部分中。

2)关闭程序包管理器控制台(PMC)并重新启动Visual Studio

3)在依赖项添加

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

4)在工具部分下添加

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

5)重新启动Visual Studio 2015

6)打开PMC和类型

Add-Migration $Your_First_Migration_Name$

这是因为启动Visual Studio时PMC会识别工具。


5
我几乎无法在VS2015上完成一个小时的编码,而无需重新启动/重新安装...
Ryan Murphy

37

确保Microsoft.EntityFrameworkCore.Tools在的dependencies部分中引用了该文件project.json。NuGet不会从此tools部分加载“程序包管理器命令” 。(参见NuGet / Home#3023

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

2
我已经在帖子的UPDATE 2中复制了整个project.json文件的内容。还有“Microsoft.EntityFrameworkCore.Tools内部依赖项”部分。Add-MigrationUpdate-Database本教程中指示的和命令在前一天晚上工作。但是,当我第二天早上在对模型进行了微小更改后尝试使用它们并再次尝试使用这些命令时,它们给出了我的帖子中描述的错误消息。我什至从SQL Server中删除了Migration文件夹和相应的数据库,但是运行这些命令后,我得到了相同的错误消息。我可能会缺少什么?
nam

我也有这些症状。我正在使用Visual Studio 2015 Update 3
Kolya_Net '16

尝试使用可重复的步骤和大量环境信息在NuGet提交错误。在团队面前,我已经提到了这方面的问题,但是他们永远无法对此进行指责。
bricelam '16

1
很奇怪,如果我将其删除tools并在之后重新添加,这可以解决我的问题。只是将其移动到dependencies将导致以下错误消息:无法执行此命令,因为项目'src \ <您的项目>中未安装'Microsoft.EntityFrameworkCore.Tools'。将“ Microsoft.EntityFrameworkCore.Tools”添加到project.json中的“工具”部分。有关更多详细信息,请参阅go.microsoft.com/fwlink/?LinkId=798221
Thorsten Westheider

我正在使用VS2017 ASP.NET Core并遇到相同的问题。这个答案也解决了!
Westerlund.io

14

相同的问题...由dong解决以下问题

1.)关闭pm管理器2.)关闭Visual Studio 3.)打开Visual Studio 4.)打开pm管理器

似乎诀窍是在关闭VS之前先关闭PM Manager


是的,重新加载PM和VS是一种解决方案,当我们在以前的旧版本中创建的最新Visual Studio中打开项目时就会发生这种情况。和VS。
马利克·哈利勒

9

我也有这个问题。我关闭并打开VS2015,它“修复”了该问题。


刚刚在VS 2019社区版中发生了这种情况。
加布

9

您必须知道您的Entity-Framework版本。另外,您还必须检查project.json和控制以下部分:

依赖中

检查:

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

本节:

“ version”:“ 1.0.0-preview2-final”,

与您的版本有关Entity-Framework,您必须对此进行更改。

之后的第二部分在proj.json这里,在您的Tools部分中JSON有:

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

此外,这部分代码与“依赖关系”部分中的您Entity-Framework的代码以及最后一部分有关。

注意:完成此问题后,您应该关闭CMD并重新启动Visual Studio。


6

我要做的是...

1)工具-> Nuget软件包管理器->软件包管理器设置

2)常规标签

3)清除所有NuGet缓存

4)重新启动Visual Studio



5

只需尝试初始化Microsoft.EntityFrameworkCore.Tools。在PM中执行

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

它帮助我解决了同样的问题。这些工具的版本可能有所不同。这取决于您在项目中使用什么。


1
对我来说,我使用相对路径。\ packages \ Microsoft.EntityFrameworkCore.Tools.1.1.0 \ tools \ init.ps1这是因为PM的当前目录已经是Solution目录,但是对我来说,Tools包是解。我个人认为这是最好的解决方案,因为无需重新启动,编辑和重新安装。它需要一瞬间,并且有效。
威廉·利德

4

我遇到了同样的问题。我的大多数项目在工具中都有相同的东西。

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

除一个项目外,此项目在所有项目上均正常运行。我将工具中的条目更改为

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

然后跑了dotnet restore。恢复完成后,Add-Migration工作正常。


2

我遇到了同样的问题,并且在解决方案文件中发现这是Visual Studio版本控制问题。

我的目标是:

VisualStudioVersion = 14.0.25123.0

但我需要定位:

VisualStudioVersion = 14.0.25420.1

将更改直接更改为解决方案文件后,EF Core cmdlet开始在程序包管理器控制台中工作。


感谢您的帮助。我使用的版本14.0.25421.03 Update 3比您使用的版本还要高。

2

这些是我遵循的步骤,它解决了问题

1)将我的Power Shell从版本2升级到了版本3

2)关闭PM控制台

3)重新启动Visual Studio

4)在PM Console dotnet restore中运行以下命令

5)添加迁移初始迁移

有效 !!!


1

我遇到了这个问题,以前的解决方案都没有帮助我。我的问题实际上是由于Windows 7计算机上的Powershell版本过旧-一旦我更新到Powershell 5,它便开始工作。


1

转到程序包管理器控制台(在Visual Studio中)并执行以下命令

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


0

我认为答案需要在2017年进行更新,因为MS进行了一些(重大)更改,在此进行了详细说明。

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

概括地说,您现在需要在“工具”部分中对EntityFrameWorkCore.Tools.DotNet的引用,如下所示

“ Microsoft.EntityFrameworkCore.Tools.DotNet”:“ 1.0.0”

我还在下面发布了一个有效的project.json文件,以防某些人遇到问题。

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

您可能还需要再次重新启动Visual Studio。
弗朗西斯


0

就我而言,我通过Nuget添加了依赖项:

Microsoft.EntityFrameworkCore.Tools

然后通过程序包管理器控制台运行:

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

0

这对我有用:在Visual Studio中,单击

工具-> NuGet软件包管理器->软件包管理器控制台

在此处输入图片说明

然后,您可以运行Add-Migration,例如:

Add-Migration InitialCreate
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.