web-dev-qa-db-fra.com

La version du package `Microsoft.EntityFrameworkCore.Tools.DotNet` n'a pas pu être résolue

Je déploie une nouvelle application .NET Core sur mon serveur. J'essaie d'exécuter la migration EntityFramework, car le projet a été créé à l'aide de la méthode "code-first".

La commande à exécuter est

mise à jour de la base de données dotnet ef

Les migrations fonctionnent localement en utilisant Visual Studio sans problème, cependant, sur le serveur, je reçois l'erreur;

Version du package Microsoft.EntityFrameworkCore.Tools.DotNet n'a pas pu être résolu.

La version sur ma machine de développement de DotNet est 1.0.0

La version sur mon serveur de DotNet est 1.0.1

Mon projet utilise le fichier .csproj (pas project.json, qui n'est plus utilisé semble-t-il).

J'ai ajouté la référence au fichier csproj, mais quelle que soit la version, j'obtiens toujours l'erreur ci-dessus.

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

Mise à jour

Fondamentalement, j'ai essayé d'installer Microsoft.EntityFrameworkCore.Tools.DotNet à partir de la ligne de commande en utilisant NUGET:

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

Ensuite, je reçois ce qui suit:

AVERTISSEMENT: l'installation a échoué. Revenir en arrière ... L'exécution des actions de nuget a pris 13,44 s Le package 'Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.0' a un type de package 'D otnetCliTool' qui n'est pas pris en charge par le projet 'C:\Program Files (x86)\Jenkins\w orkspace\api.XXX.com\XXXProject'.`

Ensuite, si j'exécute la commande dotnet ef, j'obtiens ceci:

C:\Program Files (x86)\Jenkins\workspace\api.desully.com\deSullyAPI_Core> base de données de mise à jour dotnet ef

Version du package Microsoft.EntityFrameworkCore.Tools.DotNet n'a pas pu être résolu.

Mise à jour # 2

J'ai remarqué que ma machine de développement contient des versions de SDK différentes de celles du serveur

Boîte de développement enter image description here

Boîte de production enter image description here

Je suppose que le problème est que 1.0.1 ne contient pas Microsoft.EntityFrameworkCore.Tools.DotNet? N'est-il pas étrange que l'ancienne version le fasse?

Mise à jour 3

Donc fyi - je suis allé sur le Site Microsoft pour essayer de télécharger la version 1.0.0 du SDK (car il ne semblait pas être installé sur mon serveur). Malheureusement, le site MS semble me forcer à nourrir la version 1.0.1 (qui ne contient pas les éléments EF dont j'ai besoin?).

J'ai essayé de copier le répertoire 1.0.0 de ma boîte de développement sur le serveur de production, mais cela ne semblait pas fonctionner non plus. Qu'est-ce que j'oublie ici?

14
footose

Il n'y a pas de 1.0.1 version de Microsoft.EntityFrameworkCore.Tools.DotNet (au moment de la rédaction). Vous devez définir Version="1.0.0" afin de restaurer le package.

Les versions disponibles sont répertoriées sur NuGet .

Mise à jour:

Pour utiliser les outils CLI, vous devez d'abord ajouter <DotNetCliToolReference> articles comme vous en avez déjà.

Ensuite, vous appelez dotnet restore dans le répertoire du projet pour télécharger les packages dans votre cache local, puis l'outil devient utilisable et dotnet ef peut être utilisé.

28
Martin Ullrich

Ce qui a aidé dans mon cas (.NET Core 2.0.3) a été d'émettre:

dotnet add package Microsoft.EntityFrameworkCore.Design

Puis

dotnet restore

Cela a installé le Microsoft.EntityFrameworkCore.Tools.DotNet dans une version correcte

4
MatBos