程序包管理器控制台仅在特定的VS项目中启用 - 迁移CommandNotFoundException

时间:2012-05-02 10:00:44

标签: entity-framework migration

我尝试在新项目中运行命令'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

但是在所有其他项目中,命令运行得很好。

为什么会这样?

BTW,我正在使用VS2010 Professional SP1

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

26 个答案:

答案 0 :(得分:82)

只是简单地重新启动Visual Studio为我工作。 无需安装包等。

答案 1 :(得分:74)

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

答案 2 :(得分:18)

发生此问题是因为我们没有安装Entity Framework。 请使用以下命令安装Entity Framework。

Install-Package EntityFramework -IncludePrerelease

安装完成后,在包管理器控制台默认项目下拉列表中选择项目。

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

public class MyDbContext : DbContext
    {
        public MyDbContext()
        {
        }
    }

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

No context type was found in the assembly

完成这些操作后,您可以运行

enable-migrations

答案 3 :(得分:16)

使用管理员权限重新启动Visual Studio解决了这个问题。

答案 4 :(得分:13)

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

答案 5 :(得分:9)

首先“Install-Package EntityFramework -IncludePrerelease”然后重新启动Visual Studio作为管理员一起为我工作。

答案 6 :(得分:3)

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

答案 7 :(得分:2)

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

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

答案 8 :(得分:2)

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

步骤:

Install-Package EntityFramework -IncludePrerelease

然后创建一个类为

public class MyDBContext : DbContext { public MyDBContext() { } }

最后执行

Enable-Migrations -EnableAutomaticMigrations

什么对我不起作用:

:重新启动VS。

:仅“ Enable-Migrations”命令,不带-EnableAutomaticMigrations。

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

我一开始的原始错误是

/ * 术语“启用迁移”不被视为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者是否包含路径, 验证路径是否正确,然后重试。在第1行char:1 +启用迁移 + ~~~~~~~~~~~~~~~~     + CategoryInfo:ObjectNotFound :(启用迁移:字符串)[],CommandNotFoundException * /

答案 9 :(得分:2)

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

Install-Package EntityFramework.Core -Pre

答案 10 :(得分:2)

为我修复此症状的原因(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>

我还没有完全理解为什么,但它至少起作用了。

答案 11 :(得分:1)

Enable-Migrations -EnableAutomaticMigrations

答案 12 :(得分:1)

由于我已经有了迁移文件夹,我重新启动了Visual Studio并运行了 Update-Database -verbose 在包管理器控制台中。这对我有用

答案 13 :(得分:1)

我尝试了以上所有建议,但没有任何对我有用,然后我更新Nuget Package Manager并且它有效..

答案 14 :(得分:1)

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

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

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

  3. 现在使用以下命令为当前项目启用迁移: PM> enable-migrations

答案 15 :(得分:1)

我有同样的问题,我发现这是因为项目路径中的某些字符,如[或] 我纠正了项目路径并且工作正常!

答案 16 :(得分:0)

如果创建MVC Web项目,则在创建项目时应选择Authentication。默认情况下未选中。 enter image description here

答案 17 :(得分:0)

我只是在 asp.net核心 VS2019中遇到了相同的问题

这解决了它:

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

别忘了在Package Manager Console中将默认项目设置为数据库项目,以防它们不同。

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

Install-Package Microsoft.EntityFrameworkCore.Design

答案 18 :(得分:0)

检查实体框架的版本。

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

答案 19 :(得分:0)

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

enabele-migration
add-migration migrationName
update-database

答案 20 :(得分:0)

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

答案 21 :(得分:0)

检查配置部分“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>

答案 22 :(得分:0)

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

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

答案 23 :(得分:0)

我在解决方案中有多个项目,但我有正确的默认项目集,所以我认为它应该有效。

最后,我必须在命令

中添加-StartupProject MyProjectName选项

答案 24 :(得分:0)

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

答案 25 :(得分:-4)

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

这可能是导致问题的原因。