Lorsque j'utilise les outils dotnet ef dans la console VS 2017 Package Manager, je reçois un message d'avertissement concernant la nécessité de mettre à jour les outils EF Core:
PM> dotnet ef migrations list -s ../RideMonitorSite
The EF Core tools version '2.1.1-rtm-30846' is older than that of the runtime '2.1.2-rtm-30932'. Update the tools for the latest features and bug fixes.
20180831043252_Initial
Mais mon fichier csproj a cette entrée:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.1.2" />
</ItemGroup>
J'ai confirmé que la version installée est en fait obsolète:
PM> dotnet ef --version
Entity Framework Core .NET Command-line Tools
2.1.1-rtm-30846
Alors, que dois-je faire pour mettre à jour les outils? BTW, j'ai vu dans d'autres réponses qu'un fichier global.json obsolète peut causer ce problème. Mais je n'ai aucun fichier global.json dans la solution.
J'ai renvoyé ce problème à l'équipe de développement sur github . Il s’avère qu’il s’agit d’un problème connu dans les packages d’outils ou de nugets actuels chargés lorsque vous créez un site AspNet Core fonctionnant avec EF Core. Cela devrait être corrigé dans une prochaine version.
Pour l'instant, la solution consiste simplement à ignorer l'avertissement.
Une autre solution de contournement est également proposée, consistant à modifier le fichier csproj pour définir la version du métapaquet AspNet Core de manière explicite (elle est jusqu’à la version 2.1.3 au moment où j’écris ceci), mais j’ai été incapable de faire fonctionner cette approche; Je continuais à recevoir le message d'avertissement.
Essayez celui-ci: Install-Package Microsoft.EntityFrameworkCore.Tools
Si le problème persiste, alors exécutez également ceci: Update-Package Microsoft.EntityFrameworkCore.Tools
Installez une nouvelle version du Kit de développement .NET Core SDK v2.1.401 et vérifiez à nouveau> dotnet ef --version. J'ai eu le même problème et dans mon cas, cela a fonctionné. En outre, vous n'avez pas besoin d'ajouter Microsoft.EntityFrameworkCore.Tools.DotNet.
Ma solution était d'installer l'outil dotnet-ef de Microsoft https://www.nuget.org/packages/dotnet-ef . Il utilise les mêmes commandes mais aucun avertissement. Le changement consiste à utiliser dotnet-ef au lieu de dotnet ef.
Je ne trouvais pas comment mettre à jour le paquet spécifiquement, mais dans la console du gestionnaire de paquets, j'ai exécuté 'update-package'. Il a parcouru et mis à jour tous les packages référencés dans un projet, y compris les EF Core Tools. Cela peut ne pas être idéal pour vous car cela pourrait mettre à jour des paquets que vous ne vouliez pas.
J'ai trouvé cela dans le livre 'Programming ASP.NET Core' de Dino Esposito.
'Remarque Cette version de l'outil CLI n'est pas identique à la version du runtime .NET Core que l'application utilisera. La version d'exécution est spécifiée dans le fichier de projet et vous pouvez facilement la modifier à partir de l'interface utilisateur du IDE de votre choix. Si vous souhaitez plutôt modifier manuellement le fichier de projet, il vous suffit de modifier le fichier XML .csproj et de modifier la valeur de l'élément TargetFramework. La valeur fait référence au surnom identifiant la version (telle que netcoreapp2.0). '