【问题标题】:EF6 Add-Migration in PowerShell, outside Visual StudioPowerShell 中的 EF6 添加迁移,在 Visual Studio 之外
【发布时间】:2019-05-09 14:31:03
【问题描述】:

如何在 Visual Studio 之外的 PowerShell 窗口中运行 EF6 Add-Migration

当我尝试运行它时,出现以下错误消息:

Add-Migration : The term 'Add-Migration' 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, verify that the path is correct and try again.

【问题讨论】:

  • 嗨,我知道你已经很久没有发布这个了。但是你解决了吗?
  • 不,我仍然无法在 Visual Studio 中使用它
  • 我已经设法在 PS 中加载它,但现在我收到此错误:“Get-Project”一词未被识别为 cmdlet 的名称
  • 嗨!你是怎么做到的? @TheFreeman 谢谢!

标签: powershell entity-framework-6 entity-framework-migrations


【解决方案1】:

您需要确保模块已加载。因为这是来自该控制台窗口的 VS 环境的一部分,所以默认情况下它会加载一些不同的模块。您可以通过在 VS 中打开控制台来解决此问题,并使用

PS ~/> $path = (Get-Module -Name EntityFrameworkCore).Path

对我来说,这解决了:

PS ~/> $path

C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.entityframeworkcore.tools\2.1.1\tools\EntityFrameworkCore.psm1

因此,您可以采用该路径并将其导入常规的 powershell 窗口:

PS ~/> Import-Module -Name $path

但是在查看文件夹(令人讨厌地不符合标准)之后,它还有一个模块清单文件 (.psd1),这是您应该导入的:

PS ~/> Set-Location -Path 'C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.entityframeworkcore.tools\2.1.1\tools'
PS /Program Files/dotnet/sdk/NuGetFallbackFolder/microsoft.entityframeworkcore.tools/2.1.1/tools/> Import-Module -Name EntityFrameworkCore.psd1

脚注:这是我的 VS 安装初始化其控制台的方式:

Import-Module 'C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2017\ENTERPRISE\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\NUGET\Modules\NuGet\NuGet.psd1'
$__pc_args=@(); $input|%{$__pc_args+=$_}; & 'C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.entityframeworkcore.tools\2.1.1\tools\init.ps1' $__pc_args[0] $__pc_args[1] $__pc_args[2]; Remove-Variable __pc_args -Scope 0

【讨论】:

  • 感谢您的帮助!我无法导入 EntityFramework.6.2.0\tools\EntityFramework.psd1(它不是 EF Core,而是 EF 6)。它说: Import-Module:当前 Windows PowerShell 主机的名称是:'ConsoleHost'。模块“...\Packages\EntityFramework.6.2.0\tools\EntityFramework.psd1”需要以下 Windows PowerShell 主机:“包管理器主机”。似乎 MS 确保这些只能在 VS 中运行......我是 PowerShell 的新手。如何重命名 PowerShell 主机?
  • 您可以从清单中删除该行或导入模块文件本身。
  • 您的答案完全是关于 EFCore,但问题是关于 EF6..
猜你喜欢
  • 1970-01-01
  • 2018-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 2015-03-03
  • 2016-12-10
  • 1970-01-01
相关资源
最近更新 更多