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


122

我试图在一个新项目中运行命令“ 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

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


2
嗨,请添加您的解决方案作为答案,并将其标记为已接受(您可以在2天后执行此操作),这样它就不会显示为未回答的问题。
Gert Arnold

1
我有这个完全相同的问题。但是,该线程中的所有内容似乎都不起作用。您是重新安装了整个Visual Studio还是只是运行了该命令?
ObedMarsh 2014年

我只是执行命令...
Eduardo Brites

2
可悲的是,对我来说,该命令的结果只是“'EntityFramework 6.1.0'已安装”。而且它仍然没有有效的命令add-migration或enable-migrations。
2014年

我正在获取Install-Package:无法找到包'EntityFramework'。当我尝试您的解决方案时
Naguib Ihab

Answers:


85

只是简单地重新启动Visual Studio就对我有用。无需安装软件包等


8
重新启动VS也对我
有用

5
重新启动适用于Visual Studio2015。无需安装软件包。
jonas

5
注意-每次我必须安装软件包时都会遇到此问题(例如重新安装仓库)。看来VS需要重新启动,然后才能使用新程序包正确初始化PM(VS社区2015更新1)
Jono,

2
新鲜的回购拉动也造成了我。重新启动修复它。(VS企业2015更新2)。
Mike Rouse

84

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


13
我构建了解决方案,然后关闭并重新打开了VS 2013,它起作用了
Luke

请注意,EntityFramework仅支持.net Framework 4.0和4.5。因此,如果您使用的是.net Framework 4.6或更高版本,则无法使用。

1
@TânNguyễn-那是什么?我的EntityFramework 6.1.3 NuGet在我的4.6.x项目中工作正常
bkwdesign

重新启动对我没有帮助,但确实如此。
robbpriestley

29

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

Install-Package EntityFramework -IncludePrerelease

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

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

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

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

No context type was found in the assembly

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

enable-migrations

为我工作。谢谢。
Najeeb

今天为我工作与
VS2019。– perezdr

17

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


13

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


1
我以管理员身份运行VS。当时我不知道我们需要在每个项目上安装该软件包。
Eduardo Brites

12

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

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


10

首先是“ Install-Package EntityFramework -IncludePrerelease”,然后以管理员身份重新启动Visual Studio 为我共同工作。


3

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


这对我有用,我认为它比强制升级到预发行版更好。
OverMars 2014年

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>

我还不完全了解为什么,但是至少可以。


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

2

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

Install-Package EntityFramework.Core -Pre

2

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

脚步:

Install-Package EntityFramework -IncludePrerelease

然后创建一个类

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

最后执行

Enable-Migrations -EnableAutomaticMigrations

什么对我不起作用:

:重新启动VS。

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

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

我最初的错误是

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


1

我遇到了同样的问题,我发现这是由于项目路径中的某些字符(例如[或]),我更正了项目路径,并且效果很好!


1

Enable-Migrations -EnableAutomaticMigrations


1
在尝试了几种解决方案之后,您的解决方案对我来说效果很好。
nguyenhoai890 '16

为我在Visual Studio Community 2015上工作。谢谢(所有其他解决方案在我的案例中都失败了)
fedeteka

1

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


1

我尝试了所有上述建议,但对我没有任何帮助,然后我进行了更新Nuget Package Manager,然后开始工作。


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

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

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

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


1

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

-> On the Package manager Console

Enable-migration
add-migration migrationName
update-database


0

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

最后,我必须-StartupProject MyProjectName在命令中添加选项


0

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

我注意到packages/EntityFramework.6.1.3/tools/EntityFramework.psd1缺少了,所以这可能是原因。尽管我一无所知,但它是如何首先删除的。


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>


0

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

这解决了它:

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

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

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

Install-Package Microsoft.EntityFrameworkCore.Design

我认为8年前.net核心不存在。
AFetter

0

如果创建MVC Web项目,则在创建项目时应选择“身份验证”。默认情况下未选中。 在此处输入图片说明


0

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


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.