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.DotNetcould 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>
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.DotNetcould not be re solved.
I noticed that my dev machine has different SDK versions in it than the version on the server
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?
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?
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.
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.
What helped in my case(.NET Core 2.0.3) was to issue:
dotnet add package Microsoft.EntityFrameworkCore.Design
This installed the
Microsoft.EntityFrameworkCore.Tools.DotNet in a correct version