【问题标题】:No executable found matching command "dotnet-ef" (Csproj)找不到与命令“dotnet-ef”匹配的可执行文件(Csproj)
【发布时间】:2017-08-09 17:38:26
【问题描述】:

我在 Mac 上使用 VS Code 和 ASP.NET Core MVC 开始了一个项目,这是我的 csproj:

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" />
    <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.0" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="1.1.0" />

    <PackageReference Include="System.Data.SqlClient" Version="4.3.0" />

    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="1.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1" PrivateAssets="All" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
  </ItemGroup>

我总是得到“找不到与命令“dotnet-ef”匹配的可执行文件”

我在 Windows 10 上尝试过,得到了相同的结果。

我错过了什么?

【问题讨论】:

  • 1.请不要在标题中强制添加标签 2. 不要互换使用 ASP.NET Core 和 .NET Core。它们代表完全不同的事物
  • #37276882 的可能重复项:简而言之,您需要手动编辑项目配置文件并添加对 Tools / Tools.DotNet 包的引用(因为 VS2015/VS2017 不会这样做自动地)。欲了解更多信息,read here
  • 还要确保您当前的路径是项目的根文件夹。如果您为项目创建文件夹,这可能比您预期的更深。

标签: macos asp.net-core asp.net-core-mvc visual-studio-code entity-framework-core


【解决方案1】:

添加它以使其工作:

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

【讨论】:

    【解决方案2】:
    1. 从包含 csproj 文件的文件夹中,将以下内容添加到 csproj 文件中:

      <PropertyGroup>
          <TargetFramework>netcoreapp2.0</TargetFramework>
          <RuntimeFrameworkVersion>2.0.5</RuntimeFrameworkVersion>
      </PropertyGroup>
      
      <ItemGroup>
          <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
      </ItemGroup>
      
    2. 现在通过执行以下命令包含所需的依赖项:

      dotnet add package Microsoft.EntityFrameworkCore dotnet add package Microsoft.EntityFrameworkCore.Design dotnet add package Microsoft.EntityFrameworkCore.SqlServer dotnet add package Microsoft.EntityFrameworkCore.Tools.DotNet

    3. 恢复项目,以便检查所有依赖项 dotnet restore

    4. 为了确保一切正常,请运行以下命令 dotnet ef 应该会出现一个带有基本dotnet ef 命令用法的屏幕

    5. 检查项目是否仍在构建中: dotnet build

    6. 使用以下命令从您的数据库生成脚手架:

    dotnet ef dbcontext scaffold "Server=<your_server_address[,port_number]>;Initial Catalog=<your_db>;User Id=<your_user>;Password=<your_password>" Microsoft.EntityFrameworkCore.SqlServer -f -c YourDbContext -o Db --json

    上面的命令可以描述为负责读取数据库并生成脚手架 poco 实体类和 dbcontext 文件的命令。它需要一个基本的工作连接字符串,参数f 强制覆盖,c 为上下文命名,o 确定所创建类的输出文件夹和命名空间,json 参数输出命令结果为 json 而不是零粗壮。

    很高兴保留这个命令,它将在数据库的任何更改必须反映在 ORM 上时使用

    【讨论】:

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