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.
entity-framework-core
Mark Olbert
quelle
quelle
Antworten:
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
quelle
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.
quelle
Die Lösung, die für mich funktioniert hat, besteht darin, die folgenden Befehle in der Package Manager-Konsole auszuführen:
Stellen Sie sicher, dass die Version mit der in der Fehlermeldung übereinstimmt. In meinem Fall wurde der folgende Fehler angezeigt:
Überprüfen Sie die auf der folgenden Website verfügbaren Versionen: https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/
quelle
Versuchen Sie Folgendes : Install-Package Microsoft.EntityFrameworkCore.Tools
Wenn das Problem weiterhin auftritt, führen Sie Folgendes aus : Update-Package Microsoft.EntityFrameworkCore.Tools
quelle
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)quelle
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.
quelle
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
>
paket add Microsoft.EntityFrameworkCore.Tools --version 2.1.2
quelle
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). '
quelle
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.
quelle
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
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:
Öffnen Sie die Package Manager-Konsole und geben Sie an der Eingabeaufforderung zum Erstellen der Entitäten und
DbContext
für diesakila
Datenbank den folgenden Befehl ein (passen Sie die Werte für die Verbindungszeichenfolge an Ihre Einstellungen für die Optionen user = und password = an):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
quelle
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:
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:
dotnet tool deinstallieren --global dotnet-ef
dotnet tool install --global dotnet-ef
quelle
Aktualisieren Sie die EF Core-Tools mithilfe der Dotnet-CLI oder der Package Manager-Konsole oder besuchen Sie
diese Website unter https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Tools/2.1.2.
Sie können dies auch ignorieren. Es ist kein großes Problem ...
quelle
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.
quelle