Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Version for package `Microsoft.EntityFrameworkCore.Tools.DotNet` could not be resolved

I am deploying a new .NET Core application to my server. I'm trying to run the EntityFramework migration, as the project was created using the "code-first" method.

The command to be run is

dotnet ef database update

Migrations work locally using visual studio without issue, however, on the server, I receive the error;

Version for package Microsoft.EntityFrameworkCore.Tools.DotNet could not be resolved.

The version on my development machine of DotNet is 1.0.0

The version on my server of DotNet is 1.0.1

My project uses the .csproj file (not project.json, which is no longer used it seems).

I have added the reference to the csproj file, but regardless of the version I still get the above error.

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0" />
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.1" />
  </ItemGroup>

Update

Basically I have tried installing the Microsoft.EntityFrameworkCore.Tools.DotNet from the command line using NUGET:

C:\Program Files (x86)\Jenkins\workspace\api.XXX.com\XXXProject>nuget i nstall Microsoft.EntityFrameworkCore.Tools.DotNet

Then I receive the following:

WARNING: Install failed. Rolling back... Executing nuget actions took 13.44 sec Package 'Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.0' has a package type 'D otnetCliTool' that is not supported by project 'C:\Program Files (x86)\Jenkins\w orkspace\api.XXX.com\XXXProject'.`

Then if I run the dotnet ef command, I get this:

C:\Program Files (x86)\Jenkins\workspace\api.desully.com\deSullyAPI_Core>dotnet ef update database

Version for package Microsoft.EntityFrameworkCore.Tools.DotNet could not be re solved.

Update #2

I noticed that my dev machine has different SDK versions in it than the version on the server

Dev Box enter image description here

Production Box enter image description here

I'm assuming that the problem is that 1.0.1 doesn't have Microsoft.EntityFrameworkCore.Tools.DotNet in it? Isn't it strange that the older version does?

Update 3

So fyi - I went to the Microsoft Site to try to download the 1.0.0 version of the SDK (since it didn't seem to be installed on my server). Unfortunately, the MS site seems to force feed me the 1.0.1 version (which doesn't contain the EF stuff I need?).

I tried copying the 1.0.0 dir from my dev box to the production server, but that also didn't seem to work. What am I missing here?

like image 934
footose Avatar asked Apr 12 '17 17:04

footose


People also ask

What is Microsoft EntityFrameworkCore tools?

The Entity Framework Core tools help with design-time development tasks. They're primarily used to manage Migrations and to scaffold a DbContext and entity types by reverse engineering the schema of a database.

Why dotnet ef is not recognized?

Possible reasons for this include: * You misspelled a built-in dotnet command. * You intended to execute a . NET program, but dotnet-ef does not exist. * You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.

What is EntityFrameworkCore design?

EntityFrameworkCore. Design contains all the design-time logic for Entity Framework Core. It's the code that all of the various tools (PMC cmdlets like Add-Migration , dotnet ef & ef.exe ) call into.


1 Answers

There isn't a 1.0.1 version of Microsoft.EntityFrameworkCore.Tools.DotNet (at the time of writing). You need to set Version="1.0.0" in order to restore the package.

The available versions are listed on NuGet.

Update:

To use CLI tools, you first need to add <DotNetCliToolReference> items as you have already have.

Then you call dotnet restore in the directory of the project to download the packages to your local cache, then the tool becomes usable and dotnet ef can be used.

like image 70
Martin Ullrich Avatar answered Sep 28 '22 23:09

Martin Ullrich