dotnet ef命令在Net Core 2.2中不起作用

时间:2019-10-25 11:49:04

标签: c# .net .net-core

当我需要使用“ add-migrations”命令时,我试图将vscode用作IDE 我遇到了使用“ dotnet ef migrations add name”命令的情况,但是当我尝试使用此命令时出现错误:

dotnet : Could not execute because the specified command or file was not found.
At line:1 char:1
+ dotnet ef
+ ~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Could not execu... was not found.:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

Possible reasons for this include:
  * You misspelled a built-in dotnet command.
  * You intended to execute a .NET Core program, but dotnet-ef does not exist.
  * You intended to r
un a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.

我尝试了几种解决方案,但都没有成功,有没有解决的办法?

我正在使用dotnet core 2.2

1 个答案:

答案 0 :(得分:0)

  

更新!

现在您可以使用该工具了,我们可以告诉它上下文的位置。

您提到您有用于API和数据的单独项目,所以我们将其命名为:

假设您具有以下结构:

Root:
    ├───Api:
    |     Api.csproj 
    ├───Data:
    |     Data.csproj
    |     YourDbContext.cs

Api和Data项目是分开的,您有一个称为YourDbContext的EF DbContext。

这是您需要做的。 导航到Api目录。

> cd Api
> dotnet ef migrations add Initial --project ..\Data\Data.csproj --context YourDbContext

正在发生的事情: 我们正在Api主项目中运行该工具,并使用--project标记Data项目。 我还添加了--context参数,以防万一,您知道如何指向其中之一。

请继续,尝试让我知道它的工作原理。

  

初始方法

好的,我使用3.0.100的{​​{1}}版本从项目目录运行命令:

查看输出:

dotnet sdk

这与您获得的输出完全相同,所以我猜您以为您使用的是2.2版,但也许不是。

您需要从解决方案/项目目录的上方运行该命令,并确认SDK不是3.x。

例如,如果您在项目根目录中使用以下内容创建> dotnet ef Could not execute because the specified command or file was not found. Possible reasons for this include: * You misspelled a built-in dotnet command. * You intended to execute a .NET Core program, but dotnet-ef does not exist. * You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH. 文件,也可以将sdk“强制”为2.2.402:

global.json

通过这种方式,无论您在系统中安装了什么sdk,dotnet都将使用2.2.402版本(或您在文件中设置的版本)。

希望这会有所帮助!