术语“更新 - 数据库”未被识别为cmdlet的名称

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了术语“更新 - 数据库”未被识别为cmdlet的名称相关的知识,希望对你有一定的参考价值。

我正在使用EF5 beta1,而我之前能够运行“更新数据库”。现在我关闭了Visual Studio,我无法让它运行。我收到以下错误:

术语“更新 - 数据库”未被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。在行:1 char:16 + Update-Database <<<< -verbose + CategoryInfo:ObjectNotFound:(Update-Database:String)[],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException

我试图重新安装EF5b1并且虽然成功(已安装),但“更新数据库”仍然无效。

谁能帮忙???

答案

我最近多次遇到过这个问题。我发现有效的解决方案是关闭软件包管理器控制台,关闭Visual Studio然后重新打开它们。重启也在大部分时间都有效,但并非总是如此。

另一答案

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

另一答案

我解决了卸载并重新安装“Microsoft.EntityFrameworkCore”和“Microsoft.EntityFrameworkCore.Tools”

另一答案

对于使用.Net Core和EntityFrameworkCore的任何人:

您需要安装Microsoft.EntityFrameworkCore.Tools软件包才能解决此问题。

在这里阅读更多:https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell

另一答案

在我的例子中,我做了以下操作: - 通过单击Package Manager控制台顶部的“恢复”按钮恢复丢失的NuGet包 - 重新启动Visual Studio - 运行“update-databse”

另一答案

恢复NuGet包对我没有帮助。所以我不得不重新安装包管理器 - https://visualstudiogallery.msdn.microsoft.com/4ec1526c-4a8c-4a84-b702-b21a8f5293ca可能会帮助某人

另一答案

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

另一答案

我发现这是由于包装腐败造成的。我已经安装了Automapper。当我尝试安装另一个软件包时,很明显这个软件包已经损坏了。

删除损坏的包解决了这个问题。

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

另一答案

对我来说,事实证明我的项目上没有安装EntityFramework核心(因为我从空白项目开始)。因此,安装EntityFramework包解决了这个问题。有时,如果EntityFramework安装失败,则尝试逐个安装单个软件包

EG

Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.SqlServer.Design
Microsoft.EntityFrameworkCore.Tools
另一答案

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

我没有在软件包管理器控制台中获得Update-Database。然后我重启几次。还重启Windows。

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

另一答案

我在Visual Studio 2015中遇到此问题,并通过更新Nuget的版本来解决它。

工具 - >扩展和更新 - >更新 - > Visual Studio库

另一答案

如果您使用实体框架:

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

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

欲了解更多信息,请访问:Advanced Entity Framework 6 Scenarios for an MVC 5 Web Application (12 of 12)

希望这可以帮助...

另一答案

对我来说简单的解决方法是确保更新和数据库之间存在差异,如下所示:update-database并使用小写。这可能是巧合,但是当我在Packet Manager Console中执行此操作时,数据库实际更新了,我得到了完成消息而不是not recognized as the name of a cmdlet, function, script file错误。

另一答案

在用Visual Studio 2015而不是2017年意外打开Visual Studio解决方案后,我开始遇到同样的问题。该项目在发生事故之前工作得很好。这是一个使用EF 5.0而不是EF Core的旧项目。

我尝试了所有建议 - 重新启动Visual Studio无数次,清理NuGet缓存,删除包文件夹中的所有内容,重新安装项目的EF 5 - 没有好处,无法识别添加迁移。如果我将EF升级到6,它开始识别命令,但我还不想升级。所以,一旦我回到EF 5,问题又回来了。

最终拯救我的唯一事情就是做到以下几点:

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

现在EF命令终于开始工作了。

另一答案

就我而言:

  • 重新加载项目没有帮助
  • 重启VS没有帮助
  • 重启电脑没有帮助
  • 重新安装IF没有帮助

但是我找到了一个article,其中建议使用PM Conole手动导入缺少的EF包: Import-Module .packagesEntityFramework.X.X.X oolsEntityFramework.psm1

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

另一答案

对我来说问题是Nuget版本。

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

另一答案

有时当我加载VS时,我在包管理器控制台中看到了这个:

值不能为空。

参数名称:path1

我不知道是什么导致这一点,但似乎在Powershell控制台启动期间出现问题,这会中断特定模块的注册,例如EF powershell扩展。您可以手动加载它:

Import-Module .packagesEntityFramework.6.1.1	oolsEntityFramework.psm1

确保将6.1.1替换为当前版本的Entity Framework。

另一答案

重新安装nuget包为我解决了这个问题

即,执行

Install-Package EntityFramework -Version 5.0.0

在包管理器中

另一答案

只需重新启动Visual Studio,它就能解决问题。适合我。

另一答案

如果未正确安装EF工具,您将收到此错误。

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

Update-Package "EntityFramework" -reinstall

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

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

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

Update-Package "EntityFramework"

完成后,检查原始项目,然后删除新创建的项目。

另一答案

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

当我删除括号,到C:PROJTestApp,它开始工作得很好......

另一答案

Just ReOpen visual studio对我来说很有用

另一答案

对我来说问题是Nuget版本。

  1. 卸载Nuget Package Manager。
  2. 重新启动Visual Studio。
  3. 安装了新版本的Nuget Package Manager。
  4. 然后再次重新启动Visual Studio。

以上是关于术语“更新 - 数据库”未被识别为cmdlet的名称的主要内容,如果未能解决你的问题,请参考以下文章

PowerShell 和 TFS |术语“tfpt”未被识别为 cmdlet 的名称

PowerShell 该术语未被识别为 cmdlet 函数脚本文件或可运行程序

ng :术语“ng”未被识别为 cmdlet 的名称,函数 Visual Studio 代码终端

ssh:术语“ssh”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称

eb :术语“eb”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称

cl:术语“cl”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称