包管理器控制台 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.3
和Restore 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.Tools
和 Microsoft.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 项目中的主要内容,如果未能解决你的问题,请参考以下文章