我正在Arch Linux / Visual代码上使用Arch LinuxCore2.0,并试图使EF工具正常工作,但我一直收到错误:
找不到命令dotnet
我几乎到处都找过了,但这些建议都没有用。
运行“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--信息”结果,如果有帮助的话:
[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>发布于 2019-07-03 18:25:37
给读者的注意:如果您没有安装dotnet ef,您需要先安装它:dotnet tool install --global dotnet-ef。提问者已经这么做了。你需要先做到这一点,然后这个答案的其余部分才能有所帮助。
如何解决这个问题
对于Linux和macOS,在shell的配置中添加一行:
bash/zsh:
导出PATH=“$PATH:$HOME/..dotnet/tools/”csh/tcsh:
set path = ($path $HOME/..dotnet/tools/)当您启动新的shell/终端(或下次登录时)时,dotnet ef应该可以工作。
适用于Windows
有关如何向PATH环境变量添加内容,请参见PATH。
您需要将%USERPROFILE%\.dotnet\tools添加到PATH。
到底怎么回事?
此故障的.NET Core3.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 PathLinux/macOS $HOME/.dotnet/toolsWindows %USERPROFILE%\.dotnet\tools
因此,您应该将$HOME/.dotnet/tools/添加到$PATH中。
但也请注意文档中的这一部分:
当SDK第一次运行时,这些位置会添加到用户的路径中,因此可以直接调用在那里安装的Global。
听起来好像出了什么问题。如果您使用手动tarball安装,SDK会出错,您应该向Microsoft报告此错误。如果你使用一个分发包,他们就会搞砸了,你应该把这个错误报告给他们。
发布于 2019-09-29 12:50:31
在我的例子中,%USERPROFILE%\.dotnet\中不存在tools文件夹,所以我不得不运行命令dotnet tool install --global dotnet-ef来安装dotnet。然后我就能运行dotnet了..。
这是上述install命令的结果:

https://stackoverflow.com/questions/56862089
复制相似问题