包管理器控制台 Enable-Migrations CommandNotFoundException 仅在特定的 VS 项目中

Posted

技术标签:

【中文标题】包管理器控制台 Enable-Migrations CommandNotFoundException 仅在特定的 VS 项目中【英文标题】:Package Manager Console Enable-Migrations CommandNotFoundException only in a specific VS project 【发布时间】:2012-05-11 19:06:46 【问题描述】:

我尝试在一个新项目中运行命令“Enable-Migrations”并收到消息:

PM> Enable-Migrations
The term 'Enable-Migrations' 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, verif
y that the path is correct and try again.
At line:1 char:18
+ Enable-Migrations <<<< 
    + CategoryInfo          : ObjectNotFound: (Enable-Migrations:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

但在所有其他项目中,该命令运行良好。

为什么会这样?

顺便说一句,我使用的是 VS2010 Professional SP1

编辑:我使用命令重新安装:Install-Package EntityFramework -IncludePrerelease 问题就解决了。

【问题讨论】:

您好,请将您的解决方案添加为答案并将其标记为已接受(您可以在 2 天后执行此操作),这样它就不会显示为未回答的问题。 我遇到了同样的问题。但是这个线程中的所有东西似乎都不起作用。您是重新安装了整个 Visual Studio 还是只是运行了该命令? 我只是简单地运行了命令... 遗憾的是,该命令的结果对我来说只是“'EntityFramework 6.1.0'已经安装。”它仍然没有 add-migration 或 enable-migrations 作为有效命令。 我正在安装包:无法找到包 'EntityFramework'。当我尝试你的解决方案时 【参考方案1】:

我用命令重新安装了:Install-Package EntityFramework -IncludePrerelease,问题就消失了。

【讨论】:

我构建了我的解决方案,然后关闭并重新打开 VS 2013 并且它起作用了 请注意,EntityFramework 仅支持 .net framework 4.0 和 4.5。因此,如果您使用的是 .net framework 4.6 或更高版本,则无法正常工作。 @TânNguyễn - 那是什么?我的 EntityFramework 6.1.3 NuGet 在我的 4.6.x 项目中运行良好 重启对我没有作用,但它做到了。【参考方案2】:

确保您以管理员身份运行 Visual Studio。

【讨论】:

我以管理员身份运行 VS。当时我不知道我们需要在每个项目上安装包。【参考方案3】:

首先“Install-Package EntityFramework -IncludePrerelease”然后以管理员身份重新启动 Visual Studio 对我有用。

【讨论】:

【参考方案4】:

在 Visual Studio 2012 中,我遇到了同样的错误。必须卸载 NuGet(工具 > 扩展和更新 > 已安装 > 全部:NuGet 包管理器:卸载按钮)。然后关闭 Visual Studio。然后重新打开 Visual Studio 并重新安装 NuGet(工具 > 扩展和更新 > 在线 > Visual Studio 库:NuGet 包管理器:下载按钮)。然后在以下窗口中:单击安装按钮,然后单击关闭按钮。然后关闭并重新打开 Visual Studio。

【讨论】:

这对我有用,我认为它比强制升级到预发布更好。【参考方案5】:

在VS 2013中,尝试安装UPDATE 1(RC1),问题解决。

【讨论】:

【参考方案6】:

我遇到了同样的问题,我发现这是因为项目路径中的某些字符,例如 [ 或 ] 我更正了项目路径,它运行良好!

【讨论】:

【参考方案7】:

为我(VS2013)解决此症状的方法是卸载然后使用 Nuget 重新安装 EF 包。 csproj文件的差异改变了这个...

<Reference Include="EntityFramework">
  <HintPath>..\packages\EntityFramework.6.1.1\lib\net45\EntityFramework.dll</HintPath>
</Reference>

...进入这个...

<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\EntityFramework.6.1.1\lib\net45\EntityFramework.dll</HintPath>
</Reference>

我还不完全明白为什么,但至少它起作用了。

【讨论】:

我遇到了 add-migration/update-database 等问题。我尝试了所有解决方案,但尽管我确定我已经尝试卸载并重新安装 EF,但它不起作用。到现在为止。这不是我第一次遇到 EF 包问题。 :(【参考方案8】:

只需重新启动 Visual Studio 即可为我工作。 无需安装包等。

【讨论】:

重启 VS 也对我有用,很高兴我在尝试重新安装 EntityFramework 之前尝试了这个 重新启动适用于 Visual Studio 2015。无需安装包。 注意 - 每次我必须安装我的软件包时都会遇到这个问题(比如新的 repo pull)。看起来 VS 需要在使用新软件包正确初始化 PM 之前重新启动(VS Community 2015 Update 1) Fresh repo pull 也为我造成了这种情况。重启就解决了。 (VS 企业 2015 更新 2)。【参考方案9】:

administrator 权限重新启动 Visual Studio 为我解决了这个问题。

【讨论】:

【参考方案10】:

我在解决方案中有多个项目,但我设置了正确的默认项目,所以我认为它应该可以工作。

最后,我不得不在命令中添加-StartupProject MyProjectName 选项

【讨论】:

【参考方案11】:

在 .NET Core 中,通过在包管理器控制台中输入以下内容,我能够达到与接受的答案中描述的相同的分辨率:

Install-Package EntityFramework.Core -Pre

【讨论】:

【参考方案12】:

检查项目是否在解决方案资源管理器窗口中打开。

这可能是您的问题的原因。

【讨论】:

【参考方案13】:

Enable-Migrations -EnableAutomaticMigrations

【讨论】:

在尝试了几种解决方案后,您的解决方案对我来说效果很好。 在 Visual Studio Community 2015 上为我工作。谢谢(我的案例中所有其他解决方案都失败了)【参考方案14】:

这些解决方案都不适合我。我的解决方案是删除packages/EntityFramework.6.1.3Restore NuGet Packages

我注意到packages/EntityFramework.6.1.3/tools/EntityFramework.psd1 丢失了,所以这可能是原因。虽然我不知道它是如何被删除的。

【讨论】:

【参考方案15】:

因为我已经有了迁移文件夹,所以我重新启动了 Visual Studio 并运行 更新数据库-详细 在包管理器控制台中。这对我有用

【讨论】:

【参考方案16】:

出现此问题是因为我们没有安装实体框架。 请使用以下命令安装实体框架。

Install-Package EntityFramework -IncludePrerelease

安装后,在包管理器控制台默认项目下拉菜单中选择项目。

确保项目中至少有一个类继承自数据上下文,否则使用以下类:

public class MyDbContext : DbContext
    
        public MyDbContext()
        
        
    

如果我们不这样做,我们会得到另一个错误:

No context type was found in the assembly

做完这些就可以跑了

enable-migrations

【讨论】:

为我工作。谢谢。 今天使用 VS 2019 为我工作。【参考方案17】:

检查配置部分“entityFramework”是否存在并在您的.config文件中描述

<configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/></configSections>

        <entityFramework>
            <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
            <providers>
                <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
            </providers>
        </entityFramework>

【讨论】:

【参考方案18】:

我尝试了上述所有建议,但没有任何效果,然后我更新了Nuget Package Manager,它成功了..

【讨论】:

【参考方案19】:

    使用以下命令将实体框架安装到当前项目: PM> Install-Package EntityFramework -IncludePrerelease

    在模型文件夹中添加一个类“MyDBContext”,如下所示:

    公共类 MyDBContext : DbContext 公共 MyDBContext()

    现在使用以下命令为当前项目启用迁移: PM> 启用迁移

【讨论】:

【参考方案20】:

我遇到了同样的问题,我尝试了其他人提供的大多数解决方案,但它通过以下步骤对我有用。我有 VS 2017。

步骤:

Install-Package EntityFramework -IncludePrerelease

然后创建一个类

public class MyDBContext : DbContext  public MyDBContext()   

最后执行

Enable-Migrations -EnableAutomaticMigrations

什么对我不起作用:

:重启VS。

:只有“Enable-Migrations”命令,没有-EnableAutomaticMigrations。

:恢复或更新 Nuget 包管理器。

我最初的错误是

/* 术语“启用迁移”不被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者是否包含路径, 验证路径是否正确,然后重试。在 line:1 char:1 + 启用迁移 + ~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (enable-migration:String) [], CommandNotFoundException */

【讨论】:

【参考方案21】:

我在 VS 2019 Preview、.Net Core 和 EntityFramework Core 中遇到了同样的问题。

原来我必须通过 NuGet Microsoft.EntityFrameworkCore.ToolsMicrosoft.EntityFrameworkCore.Design 安装。一旦完成,它就像一个魅力。

【讨论】:

+1 - 我还需要重新启动VS - 我认为PM / PS环境需要在此更改后重新初始化【参考方案22】:

以管理员身份运行 vs =>> 打开项目

-> On the Package manager Console

Enable-migration
add-migration migrationName
update-database

【讨论】:

【参考方案23】:

检查实体框架的版本。

如果是 6.3,将其降级到 6.2,它应该可以正常工作

【讨论】:

请详细说明。为什么有人要降级安装的库版本只是为了解决这个问题?【参考方案24】:

我刚刚在 asp.net core VS2019

中遇到了同样的问题

这解决了它:

Install-Package Microsoft.EntityFrameworkCoreInstall-Package
Install-Package Microsoft.EntityFrameworkCore.Tools

不要忘记将包管理器控制台中的默认项目设置为您的数据库项目,以防万一。

在执行迁移时,默认项目似乎也发挥了作用。在稍后的步骤中,它有助于将其安装到我的主要启动项目(不是 EF 数据库项目):

Install-Package Microsoft.EntityFrameworkCore.Design

【讨论】:

我认为 8 年前不存在 .net 核心。 @AFetter 它仍然可以帮助以后找到它的人。【参考方案25】:

如果您创建 MVC Web 项目 您应该在创建项目时选择身份验证。默认情况下未选中。

【讨论】:

【参考方案26】:

降级到 6.2 对我有帮助。 .NET Framework 4.6.1 版 旧格式的项目(非 .NET 标准) Visual Studio 应该以管理员权限打开以进行初始迁移。 我猜 6.2 以上版本的 EF 需要最新的 .NET Framework。

【讨论】:

以上是关于包管理器控制台 Enable-Migrations CommandNotFoundException 仅在特定的 VS 项目中的主要内容,如果未能解决你的问题,请参考以下文章

EF 数据迁移

codefirst数据库迁移

DbMigration的使用方法

实现CodeFirst自动数据迁移无需命令

如何实现 IDbContextFactory 以用于实体框架数据迁移

实体框架代码优先:启用迁移错误