EF Core Tools müssen aktualisiert werden


139

Wenn ich die dotnet ef-Tools in der VS 2017 Package Manager-Konsole verwende, wird eine Warnmeldung angezeigt, dass EF Core-Tools aktualisiert werden müssen:

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

Aber meine csproj-Datei hat diesen Eintrag:

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.1.2" />
  </ItemGroup>

Ich habe bestätigt, dass die installierte Version tatsächlich veraltet ist:

PM> dotnet ef --version
Entity Framework Core .NET Command-line Tools
2.1.1-rtm-30846

Was mache ich also, um die Tools zu aktualisieren? Übrigens habe ich in anderen Antworten gesehen, dass eine veraltete Datei global.json dieses Problem verursachen kann. Aber ich habe nirgendwo in der Lösung eine global.json-Datei.


Ich denke, Sie können den Verweis auf DotNetCliToolReference, github.com/aspnet/EntityFramework.Docs/issues/708
Antonio Campagnaro

Vielen Dank für den Vorschlag, @AntonioCampagnaro. Wenn ich diese Verweise entferne, wird weiterhin die Warnmeldung angezeigt.
Mark Olbert

1
Aktualisieren Sie es durch die Package Manager-Konsole wie diese Antwort
Sebastian Ferrari

Antworten:


267

Verwenden Sie die Befehlszeile, Cmd oder Powershell für spezifische Version:

dotnet tool update --global dotnet-ef --version 3.1.0

oder für die neueste Version (funktioniert auch für die Neuinstallation) :

dotnet tool update --global dotnet-ef


2
Ich hatte Version 3.0.0 und der erste Befehl funktionierte für mich, der zweite jedoch nicht. Beim Ausführen des Befehls ohne Angabe einer Version wurde folgende Fehlermeldung angezeigt: Das Tool 'dotnet-ef' konnte aus folgenden Gründen nicht aktualisiert werden: Das
Toolpaket

62
Warum können sie nicht setzen diese nur in der Fehlermeldung!
Simon_Weaver

1
Wir sollten wahrscheinlich eines Tages einen PR machen ... @Simon_Weaver
Riscie

11
Zum Teufel habe ich eine PR erstellt: github.com/dotnet/efcore/pull/20792
Riscie

19

Ich habe dieses Problem an das Entwicklungsteam auf Github weitergeleitet . Es stellt sich heraus, dass dies ein bekanntes Problem in den aktuellen Tooling- oder Nuget-Paketen ist, die beim Erstellen einer AspNet Core-Site mit EF Core-Unterstützung geladen werden. Es soll in einer zukünftigen Version behoben werden.

Im Moment besteht die Problemumgehung darin, die Warnung einfach zu ignorieren.

Es wird auch eine andere Problemumgehung angeboten, bei der die csproj-Datei angepasst wird, um die Version des AspNet Core-Metapakets explizit zu definieren - es ist bis zu 2.1.3, während ich dies schreibe -, aber ich konnte diesen Ansatz nicht zum Laufen bringen. Ich bekam immer noch die Warnmeldung.


12

Die Lösung, die für mich funktioniert hat, besteht darin, die folgenden Befehle in der Package Manager-Konsole auszuführen:

PM> Install-Package Microsoft.EntityFrameworkCore -Version 2.1.11
PM> Install-Package Microsoft.EntityFrameworkCore.Tools -Version 2.1.11

Stellen Sie sicher, dass die Version mit der in der Fehlermeldung übereinstimmt. In meinem Fall wurde der folgende Fehler angezeigt:

The EF Core tools version '2.1.1-rtm-30846' is older than that of the runtime '2.1.11-servicing-32099'. Update the tools for the latest features and bug fixes.

Überprüfen Sie die auf der folgenden Website verfügbaren Versionen: https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/


11

Versuchen Sie Folgendes : Install-Package Microsoft.EntityFrameworkCore.Tools

Wenn das Problem weiterhin auftritt, führen Sie Folgendes aus : Update-Package Microsoft.EntityFrameworkCore.Tools


2
Dies ist ein guter Vorschlag, hat aber das Problem für mich nicht behoben .
Banoona

Ein fehlendes Paket für mich installiert, ein Generationsproblem gelöst, aber die Warnung bleibt bestehen. So oder so guter Vorschlag.
Legasthenikeraboko

3

Meine Lösung bestand darin, das Tool dotnet-ef von Microsoft https://www.nuget.org/packages/dotnet-ef zu installieren . Es werden dieselben Befehle verwendet, jedoch keine Warnungen. Die Änderung besteht darin, dotnet-ef anstelle von dotnet ef zu verwenden.

Und wenn Sie dotnet-ef bereits installiert haben, verwenden Sie dotnet tool update --global dotnet-ef --version n.n.n(nnn Ihre Version, auf die aktualisiert werden soll)


2

Installieren Sie eine neue .NET Core SDK v2.1.401-Version und aktivieren Sie erneut> dotnet ef --version. Ich hatte das gleiche Problem und in meinem Fall hat das funktioniert. Außerdem müssen Sie Microsoft.EntityFrameworkCore.Tools.DotNet nicht hinzufügen.


Vielen Dank, @surbaniak. Das hatte ich schon gemacht. Es stellt sich heraus, dass dies ein bekanntes Problem mit den aktuellen Nuget-Paketen ist und behoben werden soll. Die Problemumgehung besteht darin, das Problem einfach zu ignorieren, da (angeblich; habe dies nicht selbst überprüft) kein Funktionsverlust auftritt.
Mark Olbert

Diese Antwort hat mir auch geholfen. Ich habe .NET Core SDK v2.1.403 (fast dieselbe Version) installiert und die Warnung wurde nicht mehr angezeigt. Sie müssen sicherstellen, dass sowohl das .Net Core SDK als auch die Laufzeit aktualisiert werden, um eine solche Warnung zu vermeiden, dass die Versionen auf dem neuesten Stand sind. URLs werden auch auf der Microsoft-Website geändert, aber ich habe verwendet: microsoft.com/net/download/dotnet-core/2.1
Tore Aurstad

Ich habe .NET Core SKD v2.1.701 (dotnet-sdk-2.1.701-win-x64.exe) installiert, erhalte aber immer noch den Fehler.
Patee Gutee

2

Um dieses Problem zu lösen, können Sie eine der folgenden Techniken anwenden:


  • Technik 1: Verwenden der Package Manager-Konsole (insbesondere für Microsoft Visual Studio-Benutzer)
    PM >Install-Package Microsoft.EntityFrameworkCore.Tools -Version 2.1.2

  • Technik 2: Verwenden von .NET CLI
    >dotnet add package Microsoft.EntityFrameworkCore.Tools --version 2.1.2

  • Technik 3: Verwenden der Paketreferenz

<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.2">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
  • Technik 4: Verwenden der Paket-CLI
    >paket add Microsoft.EntityFrameworkCore.Tools --version 2.1.2

Denken Sie daran: Für diese Version benötigen Sie NuGet 3.6 oder höher.
Referenzlink: https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Tools/2.1.2


1
  • Ignorieren Sie das Problem
  • Aktualisieren Sie nicht Ihre <PackageReference Include = "Microsoft. EntityFrameworkCore. Tools" Version = "" />
  • In meinem Fall bin ich mit 'Update-Database -Context MyElementContext' weitergegangen und jetzt funktioniert alles einwandfrei.

Ich fand dies in dem Buch 'Programming ASP.NET Core' von Dino Esposito.

'Hinweis Diese Version des CLI-Tools entspricht nicht der Version der .NET Core-Laufzeit, die von der Anwendung verwendet wird. Die Laufzeitversion ist in der Projektdatei angegeben und kann bequem über die Benutzeroberfläche der IDE Ihrer Wahl bearbeitet werden. Wenn Sie stattdessen die Projektdatei manuell bearbeiten möchten, ist dies so einfach wie das Bearbeiten der XML-Datei .csproj und das Ändern des Werts des TargetFramework-Elements. Der Wert bezieht sich auf den Spitznamen, der die Version identifiziert (z. B. netcoreapp2.0). '


0

Ich konnte nicht finden, wie ich das Paket speziell aktualisieren kann, aber in der Package Manager-Konsole habe ich 'update-package' ausgeführt. Alle Pakete, auf die in einem Projekt verwiesen wird, einschließlich der EF Core Tools, wurden durchlaufen und aktualisiert. Das ist möglicherweise nicht ideal für Sie, da dadurch Pakete aktualisiert werden können, die Sie nicht wollten.


Vielen Dank, @malckier. Ich habe das Update-Paket ausgeführt und es hat einige Dinge aktualisiert. Die Warnmeldung wurde jedoch weiterhin angezeigt.
Mark Olbert

0

Das Befolgen der Schritte in diesem Dokument hat mir geholfen, das Problem zu lösen - https://docs.oracle.com/cd/E17952_01/connector-net-en/connector-net-entityframework-core-scaffold-example.html

Erstellen eines Gerüsts für eine Datenbank mithilfe der Package Manager-Konsole in Visual Studio

  • Öffnen Sie Visual Studio und erstellen Sie eine neue Konsolen-App (.NET Core) für C #.
  • Fügen Sie das MySQL NuGet-Paket für EF Core mithilfe der Package Manager-Konsole hinzu. Verwenden Sie beispielsweise den folgenden Befehl, um das Paket MySql.Data.EntityFrameworkCore v8.0.13 hinzuzufügen:

Installationspaket MySql.Data.EntityFrameworkCore -Version 8.0.13

Wichtig

Die Version (z. B. -Version 8.0.13) muss mit der tatsächlich verwendeten Connector / NET-Version übereinstimmen. Informationen zur aktuellen Version.

  • Installieren Sie die folgenden NuGet-Pakete, indem Sie entweder Package Manager Console oder Manage NuGet Packages for Solution aus dem Menü Tools und dann NuGet Package Manager auswählen:

    Microsoft.EntityFrameworkCore.Design
    
    EF Core 1.1 only: Also add the MySql.Data.EntityFrameworkCore.Design package.
    
    Microsoft.EntityFrameworkCore.Tools version 1.1.6 (for EF Core 1.1) and Microsoft.EntityFrameworkCore.Tools version 2.0.3 (for EF Core 2.0)
    Note
    
    The .NET tools are included in the .NET Core 2.1 SDK and not required or supported for EF Core 2.1. If this is an upgrade, remove the reference to that package from the .csproj file (version 2.0.3 in this example) :
    
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />
    

    Öffnen Sie die Package Manager-Konsole und geben Sie an der Eingabeaufforderung zum Erstellen der Entitäten und DbContextfür die sakilaDatenbank den folgenden Befehl ein (passen Sie die Werte für die Verbindungszeichenfolge an Ihre Einstellungen für die Optionen user = und password = an):

Scaffold-DbContext "server = localhost; port = 3306; user = root; password = mypass; database = sakila" MySql.Data.EntityFrameworkCore -OutputDir sakila -f

Visual Studio erstellt im Projekt einen neuen Sakila-Ordner, der alle Tabellen enthält, die Entitäten und der Datei sakilaContext.cs zugeordnet sind.

Obwohl in den Oracle-Anweisungen angegeben ist, dass Microsoft.EntityFrameworkCore.Tools für EF Core 2.1 nicht benötigt wird, habe ich die Version 2.2.0 installiert, die mit EF 2.2 kompatibel ist


0

Wie Martin Verwenden Sie die Befehlszeile, Cmd oder PowerShell für eine bestimmte Version:

dotnet tool update --global dotnet-ef --version 3.1.0

oder für die neueste Version (funktioniert auch für die Neuinstallation):

dotnet tool update --global dotnet-ef

Ich habe jedoch ein Problem mit meinem PC: "Beim Ausführen des Befehls ohne Angabe einer Version wurde der folgende Fehler angezeigt: Das Tool 'dotnet-ef' konnte aus folgenden Gründen nicht aktualisiert werden: Das Toolpaket konnte nicht wiederhergestellt werden" Liko Pippo46

Also benutze ich diese Schritte:

dotnet tool deinstalliere --global dotnet-ef Aber ich habe das gleiche Problem, also gehe ich in das Verzeichnis der Erweiterung: C: \ Users \ Evan.dotnet \ tools.store \ dotnet-ef

Und ich fand die alte Version (2.x) Und mein zweites Problem war, dass die Datei fileproject.assets.json nicht gefunden wurde

Also kopiere ich die Datei fileproject.assets.json in der Version 2.x in das übergeordnete Repository

Und alles war perfekt gemacht:

  1. dotnet tool deinstallieren --global dotnet-ef

    Entfernt die 2.x-Version

  2. dotnet tool install --global dotnet-ef

    Installieren Sie die 3.1



0

In Ihrer Anwendung ist die Dot.net-Kernbibliotheksversion 2.1.2 und Sie arbeiten an 2.1.1 des Entity Framework-Kerns (2.1.1). Aktualisieren Sie also Ihre Bibliotheksversion, die der dot.net-Kernversion (2.1.2) entsprechen sollte.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.