【问题标题】:"No executable found matching command "dotnet-ef""“找不到与命令“dotnet-ef”匹配的可执行文件”
【发布时间】:2016-12-02 22:19:01
【问题描述】:

我正在尝试使用 this tutorial 学习 ASP.NET Core 的基础知识:

  1. 我创建了一个 ASP.NET Core Web 应用程序
  2. 我已经使用here 的指令对其进行了升级

现在,我正在尝试在项目文件夹(project.json 所在的位置)内的命令提示符下使用dotnet ef migrations add Initial 设置数据库迁移:

找不到匹配命令“dotnet-ef”的可执行文件

我已经更改了 project.json,因此 dotnet-ef 可以工作:

"tools": {
...
"Microsoft.EntityFrameworkCore.Tools": {
  "version": "1.0.0-preview1-final",                
  "imports": [
    "portable-net45+win8+dnxcore50",
    "portable-net45+win8"
  ]
}

现在,生成失败并出现以下错误:

指定的框架'Microsoft.NETCore.App',版本 未找到“1.0.0-rc2-3002702”。 - 检查应用程序依赖项并定位安装在以下位置的框架版本: C:\Program Files\dotnet\shared\Microsoft.NETCore.App - 安装了以下版本: 1.0.0 1.0.1 1.1.0 - 或者,安装框架版本 '1.0.0-rc2-3002702'

好的,这是有道理的,因为 Microsoft.EntityFrameworkCore.Tools 1.0.0-preview1-final 依赖于错误中提到的旧版本,如 project.lock.json 文件中所示。

我不想降级,所以我放了我能找到的最新版本的Microsoft.EntityFrameworkCore.Tools:

 "Microsoft.EntityFrameworkCore.Tools": {
  "version": "1.1.0-preview4-final",
  "imports": [
    "portable-net45+win8+dnxcore50",
    "portable-net45+win8"
  ]
},

这样做会导致同样的错误:

找不到匹配命令“dotnet-ef”的可执行文件

如何让它在 1.1 版中工作?

其他可能有用的上下文信息:

操作系统:Windows 7 x64 VS:2015社区版 project.json 中的其他部分:

"frameworks": {
"netcoreapp1.1": {
  "imports": [
    "portable-net45+win8+dnxcore50",
    "portable-net45+win8"
  ]
}
},

"runtimes": {
"win7-x64": {}
},

【问题讨论】:

标签: entity-framework asp.net-core entity-framework-migrations


【解决方案1】:

更新 [30/3/2017]

新包是

Install-Package Microsoft.EntityFrameworkCore.Tools

原创

尝试添加

"tools": {
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4"
  }

此外,这里还有一个使用 EF Core 1.1.0 设置 .Net Core 1.1.0 的教程

https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite

【讨论】:

  • 成功了。我还缺"Microsoft.EntityFrameworkCore.Tools": { "version": "1.1.0-preview4-final"
【解决方案2】:

Grierson 的回答是可以的,但为了将来参考,我将包括整个过程,直到我使它工作:

1) Tools.DotNet 已在接受的答案中提出建议

"tools": {
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4"
  }

运行相同的命令并收到:

无法执行此命令,因为未安装 Microsoft.EntityFrameworkCore.Design。安装与已安装的 Microsoft.EntityFrameworkCore 版本相匹配的软件包版本,然后重试。

2) 新增

//EF Core
"Microsoft.EntityFrameworkCore.Tools": {
  "version": "1.1.0-preview4-final",
  "type": "build"
}

3) 现在,错误是:

在“ApplicationDbContext”上找不到无参数构造函数。 将无参数构造函数添加到“Application DbContext”或 在中添加“IDbContextFactory”的实现 与“ApplicationDbC ontext”相同的程序集。

我选择实现接口。一种可能的方法:

public ApplicationDbContext Create(DbContextFactoryOptions options)
{
    var builder = new DbContextOptionsBuilder<ApplicationDbContext>();
    builder.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=Movies;Trusted_Connection=True;MultipleActiveResultSets=true");
    return new ApplicationDbContext(builder.Options);
}

运行dotnet ef migrations add Initial时出现同样的错误

4) 我为ApplicationDbContext 类添加了默认构造函数

现在我可以添加迁移了。

【讨论】:

    【解决方案3】:

    EntityFrameworkCore 1.1.0-preview4-final 仅适用于 asp.net core 1.1,如果您想从 core 1.0 迁移到 core 1.1,请查看https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-net-core-1-1/

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题。

      这已经帮我解决了

      "tools": {
      "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
      "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final"
      },
      

      【讨论】:

        【解决方案5】:

        您可能会错过 CliToolReference

        <ItemGroup>
           <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" />
           <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /> 
        </ItemGroup>
        

        check this

        【讨论】:

          猜你喜欢
          • 2016-09-13
          • 2017-08-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-05
          • 1970-01-01
          相关资源
          最近更新 更多