Gdy używam narzędzi dotnet ef w konsoli Menedżera pakietów VS 2017, otrzymuję komunikat ostrzegawczy dotyczący konieczności zaktualizowania narzędzi 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
Ale mój plik csproj ma ten wpis:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.1.2" />
</ItemGroup>
Potwierdziłem, że zainstalowana wersja jest w rzeczywistości nieaktualna:
PM> dotnet ef --version
Entity Framework Core .NET Command-line Tools
2.1.1-rtm-30846
Więc co mam zrobić, aby zaktualizować narzędzia? Przy okazji, widziałem w innych odpowiedziach, że nieaktualny plik global.json może powodować ten problem. Ale w rozwiązaniu nie mam pliku global.json.
entity-framework-core
Mark Olbert
źródło
źródło
Odpowiedzi:
Użyj wiersza poleceń, Cmd lub PowerShell dla określonej wersji:
dotnet tool update --global dotnet-ef --version 3.1.0
lub do użytku w najnowszej wersji (działa również w przypadku ponownej instalacji) :
dotnet tool update --global dotnet-ef
źródło
Przekazałem ten problem do zespołu programistów na github . Okazuje się, że jest to znany problem w bieżących pakietach narzędzi lub pakietach nuget, które są ładowane podczas tworzenia witryny AspNet Core z obsługą EF Core. Ma to zostać naprawione w przyszłej wersji.
Na razie obejściem jest po prostu zignorowanie ostrzeżenia.
Oferowane jest również inne obejście, polegające na poprawieniu pliku csproj w celu jawnego zdefiniowania wersji metapakietu AspNet Core - piszę to do wersji 2.1.3 - ale nie mogłem uzyskać takiego podejścia do pracy; Nadal otrzymywałem ostrzeżenie.
źródło
Spróbuj tego: Install-Package Microsoft.EntityFrameworkCore.Tools
Jeśli problem nadal występuje, wykonaj również to: Update-Package Microsoft.EntityFrameworkCore.Tools
źródło
Rozwiązaniem, które działało dla mnie, jest uruchomienie następujących poleceń w konsoli Menedżera pakietów:
Upewnij się, że wersja jest zgodna z wersją w komunikacie o błędzie w moim przypadku pojawił się następujący błąd:
Sprawdź wersje dostępne w następującej witrynie: https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/
źródło
Moim rozwiązaniem było zainstalowanie narzędzia dotnet-ef z firmy Microsoft https://www.nuget.org/packages/dotnet-ef . Używa tych samych poleceń, ale bez ostrzeżeń. Zmiana polega na użyciu dotnet-ef zamiast dotnet ef.
A jeśli masz już zainstalowany dotnet-ef, użyj
dotnet tool update --global dotnet-ef --version n.n.n
(nnn twoja wersja do aktualizacji)źródło
Zainstaluj nową wersję .NET Core SDK v2.1.401 i ponownie sprawdź> dotnet ef --version. Miałem ten sam problem iw moim przypadku zadziałało. Ponadto nie musisz dodawać Microsoft.EntityFrameworkCore.Tools.DotNet.
źródło
Aby rozwiązać ten problem, możesz zastosować jedną z następujących technik:
Technika 1: Korzystanie z konsoli Menedżera pakietów (szczególnie dla użytkowników programu Microsoft Visual Studio)
PM >
Install-Package Microsoft.EntityFrameworkCore.Tools -Version 2.1.2
Technika 2: Używanie .NET CLI
>
dotnet add package Microsoft.EntityFrameworkCore.Tools --version 2.1.2
Technika 3: Korzystanie z odwołania do pakietu
>
paket add Microsoft.EntityFrameworkCore.Tools --version 2.1.2
źródło
Znalazłem to w książce „Programming ASP.NET Core” autorstwa Dino Esposito.
Uwaga: Ta wersja narzędzia CLI nie jest taka sama, jak wersja środowiska uruchomieniowego .NET Core, z którego będzie korzystać aplikacja. Wersja środowiska wykonawczego jest określona w pliku projektu i można ją wygodnie edytować z poziomu interfejsu użytkownika wybranego IDE. Jeśli zamiast tego chcesz ręcznie edytować plik projektu, wystarczy edytować plik XML .csproj i zmienić wartość elementu TargetFramework. Wartość odnosi się do pseudonimu identyfikującego wersję (na przykład netcoreapp2.0). '
źródło
Nie mogłem znaleźć konkretnego sposobu aktualizacji pakietu, ale w konsoli Menedżera pakietów uruchomiłem „pakiet aktualizacji”. Przeszedł przez i zaktualizował wszystkie pakiety, do których odwołuje się projekt, w tym narzędzia EF Core. To może nie być idealne dla Ciebie, ponieważ może zaktualizować pakiety, których nie chciałeś.
źródło
Wykonanie czynności opisanych w tym dokumencie pomogło mi rozwiązać problem - https://docs.oracle.com/cd/E17952_01/connector-net-en/connector-net-entityframework-core-scaffold-example.html
Tworzenie szkieletu bazy danych przy użyciu konsoli Menedżera pakietów w programie Visual Studio
Ważny
Wersja (na przykład -Wersja 8.0.13) musi odpowiadać rzeczywistej używanej wersji oprogramowania Connector / NET. Aby uzyskać informacje o aktualnej wersji.
Zainstaluj następujące pakiety NuGet, wybierając konsolę Menedżera pakietów lub Zarządzaj pakietami NuGet dla rozwiązania z menu Narzędzia, a następnie menu Menedżera pakietów NuGet:
Otwarte Pakiet konsoli Menedżer i wprowadź następujące polecenie w wierszu polecenia, aby utworzyć jednostki i
DbContext
dlasakila
bazy danych (ustaw wartości connection-strunowych, aby dopasować ustawienia user = = Opcje i hasło):Program Visual Studio tworzy nowy folder sakila w projekcie, który zawiera wszystkie tabele zamapowane na jednostki i plik sakilaContext.cs.
Mimo że instrukcje Oracle mówiły, że Microsoft.EntityFrameworkCore.Tools nie jest potrzebny dla EF Core 2.1, zainstalowałem wersję 2.2.0, która jest kompatybilna z EF 2.2
źródło
Podobnie jak Martin Użyj wiersza poleceń, Cmd lub PowerShell dla określonej wersji:
Aktualizacja narzędzia dotnet --global dotnet-ef --version 3.1.0
lub do użytku w najnowszej wersji (działa również w przypadku ponownej instalacji):
aktualizacja narzędzia dotnet --global dotnet-ef
Ale mam problem na moim komputerze: „Po uruchomieniu polecenia bez określenia jakiejkolwiek wersji otrzymałem następujący błąd: Nie udało się zaktualizować narzędzia„ dotnet-ef ”z powodu: Nie można przywrócić pakietu narzędzi” Liko Pippo46
Więc używam tych kroków:
I znalazłem starą wersję (2.x), a moim drugim problemem był plik fileproject.assets.json nie został znaleziony
Więc kopiuję plik fileproject.assets.json w wersji 2.x do repozytorium nadrzędnego
I wszystko zostało wykonane perfekcyjnie:
Odinstaluj narzędzie dotnet --global dotnet-ef
instalacja narzędzia dotnet --global dotnet-ef
źródło
Zaktualizuj narzędzia EF Core przy użyciu interfejsu wiersza polecenia dotnet lub konsoli Menedżera pakietów lub odwiedzając
tę witrynę https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Tools/2.1.2
Lub możesz to zignorować. To nie jest duży problem ...
źródło
W Twojej aplikacji rdzeń biblioteki Dot.net jest wersją 2.1.2 i pracujesz nad 2.1.1 rdzeniem Entity Framework (2.1.1). Tak więc zaktualizuj wersję swojej biblioteki, która powinna być równa podstawowej wersji dot.net (2.1.2).
źródło