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
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?
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é.
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