dotnet ef not found in.NET Core 3

Śledzę dokumenty w celu utworzenia początkowej migracji. Kiedy wykonuję dotnet, dostaję sekcję pomocy, co oznacza, że ścieżka działa poprawnie.

Następnie próbuję wykonać poniższe polecenie z docs w oknie konsoli:

dotnet ef migrations add InitialCreate  

Dostaję następujący błąd:

Could not execute because the specified command or file was not found.  
Possible reasons for this include:  
  * You misspelled a built-in dotnet command.  
  * You intended to execute a .NET Core program, but dotnet-ef does not exist.  
  * You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.
  • wyłączyłem pierwszy element od skopiowania polecenia.
  • wykluczyłem drugą pozycję, ponieważ pakiet Microsoft.EntityFrameworkCore.SQLServer jest zainstalowany.
  • wyłączyłem trzeci element, ponieważ dostaję sekcję pomocy podczas wywoływania dotnet.

Googluję problem, ale ponieważ wersja jest nowa, nie ma wiele do zrobienia i / lub tonie w podobnych problemach z wcześniejszych wersji.

Próbowałem siłą zainstalować Microsoft.EntityFrameworkCore na wypadek, gdyby trzeba było go wyraźnie dodać. Napotkałem komunikat o błędzie mówiąc mi, że najnowsza wersja do wyboru jest 2.2.6 i downgrade jest no-go. Nie jestem pewien, jak zainstalować wersję zgodną z pakietem SQL, który mam już na moim systemie (a tym bardziej nie jestem pewien, czy to właściwe podejście do zabicia tego problemu).

Wykryto downgrade pakietu: Microsoft.EntityFrameworkCore od 3.0.0-preview6.19304. 10 do 2.2.6. Odwołaj się do pakietu bezpośrednio z projektu, aby wybrać inną wersję.
Www - >
Microsoft.EntityFrameworkCore.SqlServer 3.0.0-preview6.19304.10 - >
Microsoft.EntityFrameworkCore.Relational 3.0.0-preview6.19304.10 - >
Microsoft.EntityFrameworkCore (>=3.0.0-preview6.19304.10)
Web - > Microsoft.EntityFrameworkCore (>=2.2.6)

Author: Kirk Larkin, 2019-07-16

8 answers

Zobacz ogłoszenie dla ASP.NET Core 3 Preview 4, co wyjaśnia, że to narzędzie nie jest już wbudowane i wymaga jawnej instalacji:

Narzędzie dotnet ef nie jest już częścią. Net Core SDK [12]}

Ta zmiana pozwala nam wysyłać dotnet ef jako zwykłe narzędzie. NET CLI, które można zainstalować jako globalne lub lokalne narzędzie. Na przykład, aby móc zarządzać migracjami lub rusztowaniem a DbContext, Zainstaluj dotnet ef jako narzędzie globalne, wpisując następujące polecenie:

dotnet tool install --global dotnet-ef

Aby zainstalować określoną wersję narzędzia, użyj następującego polecenia:

dotnet tool install --global dotnet-ef --version 3.1.4

Powód zmiany jest wyjaśniony w docs :

Dlaczego

Ta zmiana pozwala nam na dystrybucję i aktualizację dotnet ef jako zwykłego narzędzia. NET CLI na NuGet, zgodnie z faktem, że EF Core 3.0 jest również zawsze dystrybuowany jako pakiet NuGet.

Ponadto może być konieczne dodanie następujących pakietów NuGet do twojego projekt:

 468
Author: Kirk Larkin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-01 11:44:12

EDIT: jeśli używasz pliku Dokerowego do wdrożeń, są to kroki, które musisz podjąć, aby rozwiązać ten problem.

Zmień plik Dockerfile na:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
ENV PATH $PATH:/root/.dotnet/tools
RUN dotnet tool install -g dotnet-ef --version 3.1.1

Również zmień swoje dotnet ef polecenia na dotnet-ef

 17
Author: Nick Spicer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-04 18:45:04

Narzędzia globalne można zainstalować w domyślnym katalogu lub w miejsce. Domyślne katalogi to:

  • Linux / macOS - - - > $HOME/.dotnet / tools

  • Windows - - - > % USERPROFILE%\.dotnet\tools

Jeśli próbujesz uruchomić narzędzie globalne, sprawdź, czy zmienna środowiskowa PATH na twoim komputerze zawiera ścieżkę, w której zainstalowano narzędzie globalne i czy plik wykonywalny znajduje się w tym / align = "left" /

Rozwiązywanie problemów z użyciem. NET Core tool

 6
Author: Gambitier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-03-30 19:36:42

Uruchom PowerShell lub wiersz polecenia jako Administrator i uruchom poniżej polecenia.

Dotnet tool install --global dotnet-ef --version 3.1.3

 4
Author: Surendra Yadav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-23 18:17:06

Dla wszystkich korzystających z. NET Core CLI na MinGW MSYS. Po zainstalowaniu za pomocą

dotnet tool install --global dotnet-ef

Dodaj tę linię do pliku bashrc c:\msys64\home\username\ .bashrc (lokalizacja zależy od konfiguracji)

export PATH=$PATH:/c/Users/username/.dotnet/tools
 2
Author: thebennies,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-10-22 07:13:34

Miałem ten sam problem. Rozwiązałem, odinstalowanie wszystkich wersji de w moim komputerze, a następnie ponownie zainstalować dotnet.

 0
Author: Angel Ucan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-25 15:25:25

Jeśli używasz pakietu snap dotnet-sdk na Linuksie, może to rozwiązać poprzez aktualizację ~.bashrc / etc. jak następuje:

#!/bin/bash
export DOTNET_ROOT=/snap/dotnet-sdk/current
export MSBuildSDKsPath=$DOTNET_ROOT/sdk/$(${DOTNET_ROOT}/dotnet --version)/Sdks
export PATH="${PATH}:${DOTNET_ROOT}"
export PATH="$PATH:$HOME/.dotnet/tools"
 0
Author: edencorbin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-10 05:24:38

Dla mnie problem został rozwiązany po zamknięciu Visual Studio i ponownym otwarciu

 0
Author: Ammar Ismaeel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-22 09:08:12