Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET Core 2 migration error. No executable found matching command "dotnet-ef"

When I want to add a migration to my project I got the following error:

dotnet : No executable found matching command "dotnet-ef"

For resolving this I add the following package but I still get the same error.

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

I found some solution but these are based on .net-core-1 and in .net-core-2 we don't have project.json file.

update:

Here is my .csproj file:

<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>
like image 546
mohammad Avatar asked Sep 05 '17 08:09

mohammad


2 Answers

In order to get dotnet ef to work, you need to add a DotNetCliToolReference element to the .csproj, as follows:

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

This needs to live inside an ItemGroup, something like:

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

You'll also need to make sure you run dotnet ef from the same location as the .csproj file.

like image 197
Kirk Larkin Avatar answered Nov 15 '22 11:11

Kirk Larkin


Answer

Link to thread

Above worked for me after many hrs trying many other thread answers. Simply cd'ing to folder containing csproj file in package console manager was all it took. dotnet ef commands all work fine then.

like image 31
Bob Mack Avatar answered Nov 15 '22 12:11

Bob Mack