【问题标题】:ASP.NET Core 2 migration error. No executable found matching command "dotnet-ef"ASP.NET Core 2 迁移错误。找不到与命令“dotnet-ef”匹配的可执行文件
【发布时间】:2017-09-05 08:14:25
【问题描述】:

当我想向我的项目添加迁移时,出现以下错误:

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

为了解决这个问题,我添加了以下包,但我仍然遇到同样的错误。

Microsoft.EntityFrameworkCore.Design(2.0.0)
Microsoft.EntityFrameworkCore.Tools.DotNet(2.0.0)

我找到了一些解决方案,但这些解决方案基于 .net-core-1,而在 .net-core-2 中我们没有 project.json 文件。

更新:

这是我的 .csproj 文件:

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.0" />
</ItemGroup>
<ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.Extensions.Configuration">
      <HintPath>C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.configuration\2.0.0\lib\netstandard2.0\Microsoft.Extensions.Configuration.dll</HintPath>
   </Reference>
</ItemGroup>

</Project>

【问题讨论】:

标签: asp.net-core entity-framework-core asp.net-core-mvc-2.0


【解决方案1】:

为了让dotnet ef 工作,您需要在.csproj 中添加一个DotNetCliToolReference 元素,如下所示:

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

这需要存在于ItemGroup 中,类似于:

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

您还需要确保从与 .csproj 文件相同的位置运行 dotnet ef

【讨论】:

  • 我在obj 文件夹中有两个.csproj 文件,CoreSample.Model.csproj.nuget.g.propsCoreSample.Model.csproj.nuget.g.targets。我在他们两个中都添加了&lt;ItemGroup&gt;..&lt;/ItemGroup&gt;,但我仍然遇到同样的错误。
  • 您只需右键单击项目并选择Edit XXX.csproj,即可在Visual Studio 中进行更改。
【解决方案2】:

Link to thread

在尝试了许多其他线程答案后,上面对我有用。只需在包控制台管理器中 cd'ing 到包含 csproj 文件的文件夹即可。 dotnet ef 命令一切正常。

【讨论】:

  • 感谢 MS 提供令人沮丧的 UNHELPFUL 错误消息 - 对于诸如错误文件夹之类的东西是不可接受的.....sheesh。
【解决方案3】:

我知道你们中的一些人会因为标题的 [No executable found matching command “dotnet-”] 部分来回答这个问题。在我的情况下是:

No executable found matching command “dotnet-My”

而且....原来我的应用名称是“我的应用”。确保您的程序集名称中没有空格。我将其更改为“MyApp”并正确加载。

【讨论】:

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