我在Arch VScode上使用.NET Core 2.0,并尝试使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>
答案 0 :(得分:89)
在我的情况下,%USERPROFILE%\.dotnet\
中不存在tools文件夹,因此我必须运行命令dotnet tool install --global dotnet-ef
来安装dotnet ef。然后我就可以运行dotnet ef ...
这是上述安装命令的结果:
答案 1 :(得分:5)
对于那些在更新Visual Studio或.NET Core程序包后遇到此问题的人,这是由于.NET Core 3中进行了更新,方法是从.NET Core中删除dotnet ef
并将其设为 {{ 3}} ,可以通过以下方式安装:
dotnet tool install -g dotnet-ef
有关参考,请参见separate package和此this answer
答案 2 :(得分:4)
关于路径修复:
请注意,这会将路径添加到User PATH,而不是System PATH环境变量。从Visual Studio触发“ Developer Command Prompt”或“ Developer Powershell”时,它不使用用户路径变量。您还需要将其添加到System环境变量中。
此外,您需要重新启动VS才能使更改生效。
答案 3 :(得分:3)
有时,当您安装新版本的dotnet
sdk时,它将击中PATH
。
您必须将主目录中的文件夹
.dotnet/tools
手动添加到PATH
。
答案 4 :(得分:2)
dotnet ef数据库更新
如果以上命令给您一个错误,请执行以下步骤。
dotnet工具安装-g dotnet-ef
%USERPROFILE%.dotnet \ tool
dotnet ef数据库更新
注意:它适用于.Net Core 3.0
答案 5 :(得分:1)
此故障的.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
不在您的路上。
Global Tools可以安装在默认目录或特定位置。默认目录为:
OS Path
Linux/macOS $HOME/.dotnet/tools
Windows %USERPROFILE%\.dotnet\tools
因此,您应该将$HOME/.dotnet/tools/
添加到$PATH
中。
但也请注意文档中的这一部分:
这些位置会在首次运行SDK时添加到用户的路径中,因此可以直接调用在那里安装的Global Tools。
因此,听起来好像出了点问题。如果使用手动tarball安装,则SDK可能已损坏,应将此错误报告给Microsoft。如果您使用分发包,它们会搞砸,您应该将此作为错误报告给他们。
答案 6 :(得分:1)
我尝试了以上所有答案,但在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
答案 7 :(得分:0)
这是由于.NET Core 3中进行了更新,原因是从.NET Core中删除了dotnet ef并将其作为单独的软件包。
1-您需要将%USERPROFILE%.dotnet \ tools添加到PATH。
2-如果不存在,请运行此命令
dotnet工具安装-g dotnet-ef
答案 8 :(得分:0)
在使用.net Core 5.0.0-rc.1的Ubuntu 20.04.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
答案 9 :(得分:0)
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/
答案 10 :(得分:0)
对我来说,关闭解决方案并重新启动 Windows 解决了这个问题。但在此之前,我们需要按照以下步骤检查安装是否正确。
运行以下命令。如果没有看到 dotnet-ef,则继续执行第 2 步,否则,转到第 3 步。
dotnet tool list --global
转到路径,%USERPROFILE%\.dotnet\tools
并检查是否 dotnet-ef
有没有。如果没有,那么您可能需要运行
dotnet tool install --global dotnet-ef --version 3.1.4
我相信你已经做到了。
将此路径 %USERPROFILE%\.dotnet\tools
添加到您的环境变量中,看看您是否在您的项目中得到它。
最后,您需要关闭您的项目并重新启动窗口。就我而言,这一步解决了问题。