无法将术语“ Update-Database”识别为cmdlet的名称


112

我正在使用EF5 beta1,并且之前可以运行“ Update-Database”。现在,我关闭了Visual Studio,现在无法运行它了。我收到以下错误:

术语“ Update-Database”不能识别为cmdlet,函数,脚本文件或可运行程序的名称。检查名称的拼写,或者是否包含路径,请验证路径是否正确,然后重试。在第1行:16个字符:+ Update-Database <<<< -verbose + CategoryInfo:ObjectNotFound:(Update-Database:String)[],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException

我尝试重新安装EF5b1,并且成功安装(已安装)后,“ Update-Database”仍然无法正常工作。

谁能帮忙???


3
昨天,我使用另一个cmdlet遇到了类似的问题,并且完整的系统重新启动有所帮助……
nemesv 2012年

11
不需要重新启动。执行包还原后,我们不运行init.ps1脚本(这就是为什么找不到该命令的原因)。只需退出并重新启动VS(或卸载/重新加载项目)。
RickAndMSFT

1
今天我发生了这种事。我为团队项目打开了一个仓库,它需要还原一些软件包。恢复后,update-databaseand add-migration命令将不起作用。重新启动Visual Studio修复了它。
jmbertucci 2015年

Answers:


169

我最近多次遇到这个问题。我发现有效的解决方案是关闭程序包管理器控制台,关闭Visual Studio,然后重新打开它们。在大多数情况下,重新引导也可以,但并非总是如此。


7
通常,您只需要退出重新启动VS。看到我在原始问题中的评论。在极少数情况下,您可能需要两次退出/重启VS。
RickAndMSFT

1
刚遇到问题,然后重新启动Visual Studio,事情又恢复了。谢谢。
Shubh 2015年

谢谢您提供有效的解决方案。在我尝试过的100万件事中,似乎所有事情都能奏效。
ProfK

1
当然是。这是解决方案。合法的解决方案。谢谢微软!
Khateeb321

2
我在我的数据项目上安装了“ Microsoft.EntityFrameworkCore.Tools”版本=“ 3.1.0”,并在主Web项目上安装了“ Microsoft.EntityFrameworkCore.Design”版本=“ 3.1.0”,这为我解决了问题。
HaBo

51

如果您使用实体框架:

错误消息: “错误消息(来自PMC中的Update-Database命令):术语'Update-Database'无法识别为cmdlet,函数,脚本文件或可运行程序的名称。请检查名称的拼写,或者如果包含路径,请验证该路径是否正确,然后重试。”

解决方案: “退出Visual Studio。重新打开项目,然后重试。”

有关更多信息,请访问:MVC 5 Web应用程序的高级实体框架6个方案(12 of 12)

希望这可以帮助...


@AlbatrossCafe当然:)
穆拉特·耶尔德兹

1
VS开发人员小组应为此类问题提供“刷新VS”按钮:)
sohaib

@sohaibjaved对于某些问题,重新启动VS是不够的,并且需要进行某些目录清理,如Visual Studio 2015上所示,速度非常慢。仅供参考...
MuratYıldız'16


21

有时,当我加载VS时,我会在包管理器控制台中看到以下内容:

值不能为空。

参数名称:path1

我不知道是什么原因引起的,但是在Powershell控制台启动期间似乎出了点问题,该中断了特定模块(例如EF powershell扩展)的注册。但是,您可以手动加载它:

Import-Module .\packages\EntityFramework.6.1.1\tools\EntityFramework.psm1

确保使用当前版本的Entity Framework替换6.1.1。


4
谢谢!唯一对我有用的解决方案。但是,对于将EF 6.1.3与VS 2015一起使用的任何人,EntityFramework.psm1中都有一个错误,并且这里有可用的补丁stackoverflow.com/a/30062684/1267778
议会

18

重新安装nuget软件包为我解决了此问题

即执行

Install-Package EntityFramework -Version 5.0.0

在包管理器中


1
这对我有用。我从事的项目使用EF,并且我自动假定已安装该软件包。原来不是。开发人员只是直接引用了EF dll。必须在项目中安装EntityFramework软件包,Update-Database cmd才能工作。
2014年

这个答案似乎不太有帮助,但是它挽救了我的生命。谢谢,
Nelson Miranda

今天使用Fluent API等与FK进行角力,而EntityFramework却以某种方式不断下降。在这些方面对我真正起作用的是再做一次Update-Package -Reinstall EntityFramework
马特·博尔贾

对我来说重新安装并重新启动。只是重新安装不起作用,或者只是重新启动也不起作用)
RMazitov

9

如果未正确安装EF工具,则会出现此错误。

在Nuget软件包管理器中尝试以下命令//卸载并安装相同版本的EF

Update-Package "EntityFramework" -reinstall

如果您仍然面临同样的问题。创建一个新的Web项目并在nuget中运行以下命令。

(注意:无需在相同的解决方案或相同的位置创建新项目。)

//这会将EF更新到最新版本(包括工具)//如果要使用特定版本,请使用-version标志。

Update-Package "EntityFramework"

完成此操作后,请单击原始项目,然后可以删除新创建的项目。


是!!谢谢=)我只安装了EntityFramwork,EF.Design,EF.SqlServer和EF.SqlServer.Design。
Janneman96



4

我遇到了同样的问题,它的起源在我的路径名上,我在我的路径上有一个带直括号的目录名,如下所示:C:\[PROJ]\TestApp

当我卸下括号到时C:\PROJ\TestApp,它开始可以正常工作...


通常,您只需要退出重新启动VS。看到我在原始问题中的评论。
RickAndMSFT

@RickAndMSFT这与“只是”重新启动VS的更好解决方案非常接近。
ProfK

@Antonio即使我遇到了同样的问题,您的解决方案也对我有效。
User5590


4

对我来说,问题是Nuget版本

  1. 卸载Nuget软件包管理器。
  2. 重新启动Visual Studio。
  3. 安装了新版本的Nuget软件包管理器。
  4. 然后再次重新启动Visual Studio。

1
对我来说就是这种情况,但我只需要更新扩展名中的nuget并进行更新
橡树

这对我有用,卸载了nuget软件包管理器,重新安装了nuget软件包管理器,重新启动了Visual Studio,卸载了EntityFramework,重新安装了EntityFramework
Rizan Zaky

3

我通过卸载和重新安装“ Microsoft.EntityFrameworkCore”和“ Microsoft.EntityFrameworkCore.Tools”解决了问题


1
如果您使用的是EF Core,这是正确的答案。至少,对我而言,问题Microsoft.EntityFrameworkCore.Tools是未安装。
柯克·沃尔

2

当您直接从文件资源管理器中打开项目时,似乎会发生此问题。尝试先启动VS,然后打开项目-对我有用。我猜这与访问路径有关。


重新启动几次后仍未解决,这有助于解决我的问题!
尼古拉斯


0

如果其他答案不起作用(VS 2017):清除NuGet缓存,重新启动VS,然后还原软件包。


0

我发现这是由于软件包损坏所致。我已经安装了Automapper。很明显,当我尝试安装另一个软件包时,此软件包已损坏。

删除损坏的程序包为我解决了这个问题。

然后,您可以重新安装automapper。问题是版本5.4,现在我很高兴使用6.0。


0

对我来说,我的项目中未安装EntityFramework核心(因为我是从空白项目开始的)。所以安装EntityFramework软件包可以解决此问题。有时,如果EntityFramework安装失败,则尝试一一安装单个软件包

例如

Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.SqlServer.Design
Microsoft.EntityFrameworkCore.Tools

0

我通过更新软件包管理器控制台解决了。

我没有在Package Manager控制台中获取Update-Database。然后我重新启动了几次。同时重新启动Windows。

然后我从nuget下载了新的,然后解决了。



0

对我来说,简单的解决方法是确保更新和数据库之间有破折号,如下所示:update-database并使用小写字母。可能是偶然的,但是当我在Packet Manager控制台中执行此操作时,数据库实际上已更新,并且收到的是完成消息,而不是not recognized as the name of a cmdlet, function, script file错误消息。


0

在我意外地使用Visual Studio 2015而不是2017打开Visual Studio解决方案后,我也遇到了同样的问题。在此之前,该项目运行良好。这是使用EF 5.0而不是EF Core的较旧项目。

我尝试了所有建议的操作-无数次重新启动Visual Studio,清理了NuGet缓存,删除了packages文件夹中的所有内容,为该项目重新安装了EF 5-不好,无法识别添加迁移。如果我将EF升级到6,它将开始识别命令,但是我还不想升级。因此,当我恢复到EF 5时,问题又回来了。

最终拯救我的唯一一件事是执行以下操作:

  • 关闭Visual Studio
  • 从“包”文件夹中删除所有内容
  • 删除解决方案根目录中的.vs文件夹。此文件夹通常是隐藏的,您必须打开“显示隐藏的文件和文件夹”设置或选中“视图”选项卡中的“隐藏的项目”
  • 启动Visual Studio并打开您的解决方案。它将要求还原NuGet软件包,并同意。

现在,EF命令终于再次开始工作。


0

就我而言:

  • 重新加载项目没有帮助
  • 重启VS没有帮助
  • 重新启动计算机没有帮助
  • Reinstal EF没有帮助

但是我发现了一篇文章,建议使用PM Conole手动导入丢失的EF软件包:

Import-Module .\packages\EntityFramework.X.X.X\tools\EntityFramework.psm1

这个解决方案解决了我的问题。


0

在我的情况下,重新启动Visual Studio (很多次)不起作用,然后在寻找其他地方时,我在输出终端上发现了一条消息:

当前的.NET SDK不支持定位.NET Core 2.2。目标.NET Core 2.1或更低版本,或者使用支持.NET Core 2.2的.NET SDK版本。

因此,我安装了所需版本的.NET Core,命令成功运行。


0

我在VS 2019中存在一个使用EntityFramework 6.3.0的现有项目的问题。该项目在一段时间内对其进行了一些奇怪的版本更改,并且没有任何效果。我相信我尝试过这里列出的所有建议都没有运气。

最后,通过在Package Manager控制台中运行EntityFramework的预发行版本(当前为6.4.0-preview3-19553-01),确实解决了该问题Update-Package EntityFramework -prerelease。我希望这个版本在接下来的几周内正式发布时能够正常运行。




-1

对我来说,问题是Nuget版本。

我删除并重新安装了Nuget,然后重新启动了Visual Studio,然后全部开始工作。

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.