dotnet ef не знайдено у .NET Core 3


170

Я стежу за документами , щоб створити початкову міграцію. Коли я виконую dotnet, я отримую довідковий розділ, тобто PATH працює належним чином.

Тоді я намагаюся виконати команду нижче з вікна Документи у консолі:

dotnet ef migrations add InitialCreate  

Я отримую таку помилку:

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.
  • Я виключив перший елемент, оскільки скопіював команду.
  • Я виключив другий елемент, оскільки встановлений пакет Microsoft.EntityFrameworkCore.SqlServer .
  • Я виключив третій елемент, тому що отримую розділ довідки при виклику dotnet .

Я переглядаю проблему, але оскільки нова версія нова, то не так вже й багато часу, і / або вона заглушається у подібних проблемах з попередніх версій.

Я намагався насильно встановити Microsoft.EntityFrameworkCore на випадок, якщо це потрібно буде явно додати. Я наткнувся на повідомлення про помилку, яке повідомило мені, що остання версія, яку вибирати, - це 2.2.6, а пониження - недоступне. Я не впевнений, як встановити версію, сумісну з пакетом SQL, який у мене вже є в моїй системі (і навіть менш певно, якщо це правильний підхід для усунення цієї проблеми).

Виявлено пониження пакету: Microsoft.EntityFrameworkCore від 3.0.0-попереднього перегляду6.19304.10 до 2.2.6. Посилайтеся на пакет безпосередньо з проекту, щоб вибрати іншу версію.
Web ->
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)

Відповіді:


331

Дивіться оголошення про ASP.NET Core 3 Preview 4, де пояснюється, що цей інструмент більше не вбудований і вимагає явної установки:

Інструмент dotnet ef більше не входить до .NET Core SDK

Ця зміна дозволяє нам поставляти dotnet efяк звичайний інструмент .NET CLI, який можна встановити як глобальний або локальний інструмент. Наприклад, щоб мати змогу керувати міграціями або риштуваннями a DbContext, встановіть dotnet efяк глобальний інструмент, набравши таку команду:

dotnet tool install --global dotnet-ef

Щоб встановити певну версію інструменту, скористайтеся такою командою:

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

Причина зміни пояснюється в документах :

Чому?

Ця зміна дозволяє нам поширювати та оновлювати dotnet efяк звичайний інструмент .NET CLI на NuGet, що відповідає тому, що EF Core 3.0 також завжди поширюється як пакет NuGet.

Крім того, вам може знадобитися додати наступні пакети NuGet до свого проекту:


5
Ось посилання на nuget, якщо ви хочете перевірити версію для встановлення
Juan De la Cruz

2
Лише зауваження .. [dotnet-ef --version 3.0.0] є найбільш сумісним для [dotnet core version 3.1.100].
Каталізатор

Установка глобально зручно, але ви також можете встановити Dotnet інструментів локально в даний час
Зак Еспозіто

Microsoft.EntityFrameworkCore.Tools не потрібен.
йогіхостінг

9

EDIT: Якщо ви використовуєте Dockerfile для розгортання, це кроки, які потрібно вжити для вирішення цієї проблеми.

Змініть Dockerfile, щоб він включав наступне:

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

Також змініть свої dotnet efкоманди, щоб бутиdotnet-ef


Якщо все-таки PATH не працює, використовуйте ENV-директиву так: ENV PATH $ PATH: /root/.dotnet/tools
Jaliya Udagedara

4

Глобальні інструменти можуть бути встановлені в каталозі за замовчуванням або в певному місці. За замовчуванням каталоги:

  • Linux / macOS ---> $ HOME / .dotnet / інструменти

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

Якщо ви намагаєтеся запустити глобальний інструмент, переконайтеся, що змінна середовища PATH на вашій машині містить шлях, де ви встановили глобальний інструмент, і чи виконується він у цьому шляху.

Виправлення неполадок використання інструмента .NET Core


Це була моя проблема, коли я встановив на MacOS через "dotnet tool install --global dotnet-ef", я отримав підказку закрити та знову відкрити вікно терміналу, щоб нова конфігурація набула чинності, але насправді папка встановлення за замовчуванням $ HOME / .net / інструменти не були додані до змінної PATH.
Майк Дайлор

Я радий, що вам це допомогло :)
Gambitier

1

Запустіть PowerShell або командний рядок як адміністратор і запустіть нижче команди.

встановлення інструменту dotnet --global dotnet-ef --версія 3.1.3


0

У мене була така ж проблема. Я вирішив, видаливши всі версії де на своєму ПК, а потім перевстановив dotnet.


6
Краще підходить як коментар. Слід пояснити, як вирішити і чому з ресурсами
Джош Адамс

0

якщо ваш пакет оснащення dotnet-sdk в Linux це може вирішити, оновивши ваш ~ .bashrc / etc. таким чином:

#!/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"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.