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

问题描述 投票:105回答:22

我试图在一个新项目中运行命令'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,问题消失了。

entity-framework migration
22个回答
82
投票

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


2
投票

我有同样的问题,我尝试了其他人提供的大部分解决方案,但它适用于我以下步骤。我有VS 2017。

脚步:

Install-Package EntityFramework -IncludePrerelease

然后创建一个类

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

并在最后执行

Enable-Migrations -EnableAutomaticMigrations

什么对我不起作用:

:重启VS.

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

:恢复或更新Nuget Package Manager。

我最初的错误是

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


2
投票

我对VS 2019 Preview,.Net Core和EntityFramework Core也有同样的问题。

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


1
投票

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


1
投票

Enable-Migrations -EnableAutomaticMigrations


1
投票

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


1
投票

我尝试了所有上述建议,但没有任何对我有用,然后我更新了Nuget Package Manager,它的工作..


1
投票
  1. 使用以下命令将Entity框架安装到当前项目:PM> Install-Package EntityFramework -IncludePrerelease
  2. 在Model文件夹中添加一个“MyDBContext”类,如下所示: 公共类MyDBContext:DbContext {public MyDBContext(){}}
  3. 现在使用以下命令启用当前项目的迁移:PM> enable-migrations

0
投票

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


0
投票

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

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


0
投票

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

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


74
投票

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


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
投票

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

enabele-migration
add-migration migrationName
update-database

-4
投票

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

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


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

16
投票

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


13
投票

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


9
投票

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


3
投票

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


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>

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


2
投票

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

Install-Package EntityFramework.Core -Pre
© www.soinside.com 2019 - 2024. All rights reserved.