Arch VScodeで.NETコア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>
読者への注意:dotnet ef
をインストールしていない場合は、最初にインストールする必要があります:dotnet tool install --global dotnet-ef
。質問者はすでにそれをしました。この回答の残りの部分が役立つ前に、最初にそれを行う必要があります。
LinuxおよびmacOSの場合は、シェルの設定に行を追加します。
bash
/zsh
:
export PATH="$PATH:$HOME/.dotnet/tools/"
csh
/tcsh
:
set path = ($path $HOME/.dotnet/tools/)
新しいシェル/ターミナルを起動したとき(または次回ログインしたとき)は、dotnet ef
が機能するはずです。
Windowsの場合:
PATH
環境変数に追加する方法については この質問 を参照してください。
PATH
に%USERPROFILE%\.dotnet\tools
を追加する必要があります。
この障害の.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.
2番目と3番目はどちらもdotnet
がdotnet-ef
コマンドを見つけようとしているのに、それを見つけることができません。 3番目の点が言うように、dotnet-ef
はパスに含まれていません。
ここに ドキュメントが言うこと :
グローバルツールは、デフォルトディレクトリまたは特定の場所にインストールできます。デフォルトのディレクトリは次のとおりです。
OS Path
Linux/macOS $HOME/.dotnet/tools
Windows %USERPROFILE%\.dotnet\tools
したがって、$HOME/.dotnet/tools/
を$PATH
に追加する必要があります。
しかし、ドキュメントのこの部分にも注意してください:
これらの場所は、SDKが最初に実行されるときにユーザーのパスに追加されるため、そこにインストールされているグローバルツールを直接呼び出すことができます。
つまり、何か問題があったようです。手動のtarballを使用してインストールした場合、SDKは失敗し、このバグをマイクロソフトに報告する必要があります。配布パッケージを使用する場合、それらは台無しになり、これをバグとして彼らに報告する必要があります。
dotnet
sdkの新しいバージョンをインストールすると、PATH
にヒットすることがあります。
ホームディレクトリから
PATH
にフォルダ.dotnet/tools
を手動で追加する必要があります。
上記のすべての回答を試してみましたが、最新のCatalinaアップデートではMacで動作しませんでした。
たとえば.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データベースの更新
上記のコマンドでエラーが発生した場合は、以下の手順を実行してください。
dotnetツールインストール-g dotnet-ef
%USERPROFILE%.dotnet\tool
dotnet efデータベースの更新
注:.Net Core 3.0で動作しました
Jetbrains Riderでこの問題に苦しんでいる人のために、私はこのページにリストされているすべての解決策を試し、最終的にVSに入り、そこでdotnetツールのinstall --global dotnet-ef --version 3.0.0コマンドを実行し、Riderで再び開きました。動いた。
パス修正について:
これにより、システムPATH環境変数ではなく、ユーザーPATHへのパスが追加されることに注意してください。 Visual Studioから「開発者コマンドプロンプト」または「開発者Powershell」を起動するとき、ユーザーパス変数を使用しません。システム環境変数にも追加する必要があります。
また、変更を有効にするには、VSを再起動する必要があります。
これは、.NET Core 3で.NET Coreからdotnet efを削除して別のパッケージにすることで行われた更新によるものです。
1-%USERPROFILE%.dotnet\toolsをPATHに追加する必要があります。
2-存在しない場合は、このコマンドを実行します
dotnet tool install -g dotnet-ef