The specified framework 'Microsoft.NETCore.App', version '2.1' was not found

WJK picture WJK · Nov 18, 2018 · Viewed 37.3k times · Source

I am developing an Angular 6 application in dotNet Core 2.1. Everything is working flawlessly, until I got to setting up EFCore. All my models are defined and context created. Running dotnet ef migrations add InitialCreate gives me the "The specified framework 'Microsoft.NETCore.App', version '2.1' was not found" error.

I have searched and read all the posts I could find that has this error across various versions of dotNet Core. Nothing is working to resolve this issue for me.

I have various versions of dotNet Core App installed. Looking at "C:\Program Files\dotnet\shared\Microsoft.NETCore.App" I have the following:

-1.0.4
-1.0.5
-1.1.1
-1.1.2
-2.0.0
-2.0.3
-2.0.5
-2.0.6
-2.0.7
-2.0.9
-2.1.0
-2.1.4
-2.1.5
-2.1.6

"C:\Program Files\dotnet" appears as the first path in my System PATH variable.

Downgrading all the projects in my solution to dotNet Core 2.0, running the command results in exactly the same error, referring to version 2.0.

Any advise would be greatly appreciated...

The csproj file for my EF project is as follows:

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

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.4" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\*********.Contracts\*********.Contracts.csproj" />
  </ItemGroup>

  <ItemGroup>
    <Reference Include="System">
      <HintPath>System</HintPath>
    </Reference>
    <Reference Include="System.Data">
      <HintPath>System.Data</HintPath>
    </Reference>
    <Reference Include="System.Xml">
      <HintPath>System.Xml</HintPath>
    </Reference>
  </ItemGroup>
</Project>

Answer

WJK picture WJK · Nov 19, 2018

To solve the issue, I had to install the Microsoft.EntityFrameworkCore.Design package. The installing-the-tools section of the documentation states that it is not necessary to do so for Asp.Net Core 2.1+:

ASP.NET Core 2.1+

  • Install the current .NET Core SDK. The SDK has to be installed even if you have the latest version of Visual Studio 2017.
    This is all that is needed for ASP.NET Core 2.1+ because the Microsoft.EntityFrameworkCore.Design package is included in the Microsoft.AspNetCore.App metapackage.

My solution is broken up into different projects; I created a Class Library project where my EF Core installation resides.

Since it is not an Asp.Net Core project (It's a Class Library as stated before), it also required the Microsoft.EntityFrameworkCore.Design package to be installed.

The package can be installed using: dotnet add package Microsoft.EntityFrameworkCore.Design

Thanks to Ivan Stoev for pointing me in the direction of the documentation.
The error was no help at all, sending me on a wild goose chase to try and find the underlying problem. I hope this will be useful to someone else.