【问题标题】:Package Manager Console Enable-Migrations CommandNotFoundException only in a specific VS project包管理器控制台 Enable-Migrations CommandNotFoundException 仅在特定的 VS 项目中
【发布时间】: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'。当我尝试你的解决方案时

标签: entity-framework migration


【解决方案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】:
                        1. 使用以下命令将实体框架安装到当前项目: PM> Install-Package EntityFramework -IncludePrerelease

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

                          公共类 MyDBContext : DbContext { 公共 MyDBContext() { } }

                        3. 现在使用以下命令为当前项目启用迁移: 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。

                                【讨论】:

                                  猜你喜欢
                                  • 2013-04-15
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 2016-09-15
                                  • 2012-05-10
                                  • 1970-01-01
                                  • 2017-11-11
                                  • 2015-10-17
                                  • 1970-01-01
                                  相关资源
                                  最近更新 更多