Не можете найти команду 'dotnet ef'?
Я использую.NET core 2.0 на Arch VScode и пытаюсь заставить работать инструменты EF, но продолжаю получать эту ошибку "не могу найти команду dotnet ef". Я только что посмотрел везде, и ни одно из предложений не сработало. Так что, если вы можете помочь, это было бы очень ценно.
Результат запуска 'dotnet ef'
[wasiim@wasiim-PC WebApiServerApp]$ dotnet ef --help
Cannot find command 'dotnet ef', please run the following command to install
dotnet tool install --global dotnet-ef
[wasiim@wasiim-PC WebApiServerApp]$ dotnet tool list -g
Package Id Version Commands
---------------------------------------------------
dotnet-dev-certs 2.2.0 dotnet-dev-certs
dotnet-ef 2.2.3 dotnet-ef
[wasiim@wasiim-PC WebApiServerApp]$
это результат dotnet --info, если это поможет
[wasiim@wasiim-PC WebApiServerApp]$ dotnet --info
.NET Core SDK (reflecting any global.json):
Version: 2.2.105
Commit: 7cecb35b92
Runtime Environment:
OS Name: arch
OS Version:
OS Platform: Linux
RID: arch-x64
Base Path: /opt/dotnet/sdk/2.2.105/
Host (useful for support):
Version: 2.2.3
Commit: 6b8ad509b6
.NET Core SDKs installed:
2.2.105 [/opt/dotnet/sdk]
.NET Core runtimes installed:
Microsoft.NETCore.App 2.2.3 [/opt/dotnet/shared/Microsoft.NETCore.App]
To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download
Это мой файл.csproj
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Lucene.Net.Analysis.Common" Version="4.8.0-beta00005" />
<PackageReference Include="Lucene.Net.QueryParser" Version="4.8.0-beta00005" />
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.5" />
<PackageReference Include="Lucene.Net" Version="4.8.0-beta00005" />
<PackageGroup Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.2.4" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />
</ItemGroup>
</Project>
14 ответов
.NET Core 3.0 (предварительная версия) версия этого сбоя гораздо ярче:
$ dotnet ef
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.
Второй и третий оба относятся к dotnet
пытаясь найти dotnet-ef
команда, но не могу ее найти. Как говорит третий пункт, dotnet-ef
не на вашем пути.
Вот что говорят доктора:
Глобальные инструменты могут быть установлены в каталоге по умолчанию или в определенном месте. Каталоги по умолчанию:
OS Path
Linux/macOS $HOME/.dotnet/tools
Windows %USERPROFILE%\.dotnet\tools
Итак, вы должны добавить $HOME/.dotnet/tools/
на ваш $PATH
,
Но также обратите внимание на эту часть из документов:
Эти местоположения добавляются в путь пользователя при первом запуске SDK, поэтому установленные там глобальные инструменты можно вызывать напрямую.
Похоже, что-то пошло не так. Если вы установили с помощью ручного архива, SDK облажался, и вы должны сообщить об этой ошибке в Microsoft. Если вы используете дистрибутив, он облажался, и вам следует сообщить об этом как об ошибке.
В моем случае папки инструментов внутри не было %USERPROFILE%\.dotnet\
поэтому мне пришлось запустить команду dotnet tool install --global dotnet-ef
установить dotnet ef. Затем я смог запустить dotnet ef...
Это было результатом указанной выше команды установки:
Для тех, кто столкнулся с проблемой после обновления своего пакета Visual Studio или.NET Core, это связано с обновлениями, сделанными в.NET Core 3 путем удаления dotnet ef
из.NET Core и сделав его отдельным пакетом, который можно установить с помощью:
dotnet tool install -g dotnet-ef
Для справки см. Этот ответ и это критическое изменение
Я попробовал все ответы выше и не работал на своем Mac с последним обновлением Catalina.
если вы, например, используете версию.netcore 3, вам необходимо выполнить следующие команды:
export PATH="$PATH:$HOME/.dotnet/tools/"
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=false
export DOTNET_ADD_GLOBAL_TOOLS_TO_PATH=true
dotnet tool install --global dotnet-ef --version 3.0.0
обновление базы данных dotnet ef
Если приведенная выше команда выдает ошибку, выполните следующие действия.
- проверьте, существует ли путь%USERPROFILE%.dotnet\
- если нет, то запустите команду ниже
установка инструмента dotnet -g dotnet-ef
- Теперь снова проверьте путь и установите переменную среды для пути ниже
%USERPROFILE%.dotnet\ инструмент
- Теперь в cmd установите путь, в котором присутствует ваш файл контекста базы данных, а затем запустите команду ниже
обновление базы данных dotnet ef
Примечание: это сработало для.Net Core 3.0
По поводу исправления пути:
Имейте в виду, что это добавляет путь к User PATH, а не к переменной среды System PATH. При запуске "Командной строки разработчика" или "Developer Powershell" из Visual Studio он не использует переменную пути пользователя. Вам также нужно будет добавить его в переменную среды System.
Кроме того, вам необходимо перезапустить VS, прежде чем изменения вступят в силу.
Иногда при установке новой версии dotnet
SDK, он попадает в PATH
,
Вы должны вручную добавить папку
.dotnet/tools
из вашего домашнего каталога вPATH
,
dotnet nuget add source --name nuget.org https://api.nuget.org/v3/index.json
dotnet tool install --global dotnet-ef
Для тех, кто борется с этой проблемой в Jetbrains Rider, я попробовал все решения, перечисленные на этой странице, и в конечном итоге зашел в VS и запустил команду dotnet tool install --global dotnet-ef --version 3.0.0, а затем снова открыл в Rider и это сработало.
TL&DR:
dotnet tool install -g dotnet-ef
Обоснование: см. Объявление для ASP.NET Core 3 Preview 4, в котором объясняется, что этот инструмент больше не является встроенным и требует явной установки.
Ссылка: https://devblogs.microsoft.com/dotnet/announcing-entity-framework-core-3-0-preview-4/
У меня была такая же проблема в Ubuntu 20.04.1 с.net Core 5.0.0-rc.1, и решение, которое сработало для меня, заключалось в установке
dotnet ef
как местный инструмент
https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools#install-a-local-tool
dotnet new tool-manifest
dotnet tool install dotnet-ef --version 5.0.0-rc.1.20451.13
С помощью EF Core 6.0 мы можем создавать пакеты EF — MSDN
Это решает вышеуказанную проблему, пакет можно запускать как обычный исполняемый файл и применять миграции. Просто убедитесь, что у вас есть
appsettings.json
или же
secrets.json
при использовании пакета UserSecrets вместе со сгенерированным двоичным файлом.
user@shell~$ ./efbundle
PS> efbundle.exe
Проект
--project
а также
--startup-project
также может быть указан так же, как и с обычными миграциями
PS> dotnet ef migrations bundle --self-contained -r linux-x64 --project .\MyApp.Shared --startup-project .\MyApp.ApiClient
Я считаю, что мы должны иметь возможность также указать
--connection your_connection_string
вот, но я не пробовал.
Для меня закрытие решения и перезапуск окон решили проблему. Но перед этим нам нужно выполнить следующие шаги, чтобы проверить, правильно ли выполнена установка.
Выполните приведенную ниже команду. Если вы не видите dotnet-ef, переходите к шагу 2, иначе переходите к шагу 3.
dotnet tool list --global
Перейдите по пути и проверьте, есть ли
dotnet-ef
есть или нет. В противном случае вам может потребоваться запуститьdotnet tool install --global dotnet-ef --version 3.1.4
Я считаю, что вы это уже сделали.
Добавить этот путь
%USERPROFILE%\.dotnet\tools
в переменные вашей среды, чтобы увидеть, есть ли у вас это в своем проекте или нет.Наконец, вам нужно закрыть проект и перезапустить окно. В моем случае этот шаг решил проблему.
Это связано с обновлениями, сделанными в.NET Core 3 путем удаления dotnet ef из.NET Core и превращения его в отдельный пакет.
1-Вам нужно добавить%USERPROFILE%.dotnet\tools в ПУТЬ.
2-Если не существует, запустите эту команду
установка инструмента dotnet -g dotnet-ef