web-dev-qa-db-ja.com

コマンド「dotnet ef」が見つかりませんか?

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>
47

読者への注意: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番目はどちらもdotnetdotnet-efコマンドを見つけようとしているのに、それを見つけることができません。 3番目の点が言うように、dotnet-efはパスに含まれていません。

ここに ドキュメントが言うこと

グローバルツールは、デフォルトディレクトリまたは特定の場所にインストールできます。デフォルトのディレクトリは次のとおりです。

OS Path

Linux/macOS $HOME/.dotnet/tools

Windows %USERPROFILE%\.dotnet\tools

したがって、$HOME/.dotnet/tools/$PATHに追加する必要があります。

しかし、ドキュメントのこの部分にも注意してください:

これらの場所は、SDKが最初に実行されるときにユーザーのパスに追加されるため、そこにインストールされているグローバルツールを直接呼び出すことができます。

つまり、何か問題があったようです。手動のtarballを使用してインストールした場合、SDKは失敗し、このバグをマイクロソフトに報告する必要があります。配布パッケージを使用する場合、それらは台無しになり、これをバグとして彼らに報告する必要があります。

32
Omair Majid

私の場合、ツールフォルダーは%USERPROFILE%\.dotnet\内に存在しなかったため、dotnet efをインストールするにはdotnet tool install --global dotnet-efコマンドを実行する必要がありました。次に、dotnet efを実行できました...

これは、上記のインストールコマンドの結果です。

This was the result of the above install command

106
Garth

Visual Studioまたは.NET Coreパッケージを更新した後に問題が発生した場合、これは.NET Core 3で.NET Coreからdotnet efを削除し、それを個別のパッケージこれは次の方法でインストールできます。

dotnet tool install -g dotnet-ef

参考のために この答え およびこれを参照してください 重大な変更

7
Elnoor

dotnet sdkの新しいバージョンをインストールすると、PATHにヒットすることがあります。

ホームディレクトリからPATHにフォルダ.dotnet/toolsを手動で追加する必要があります。

4
baruchiro

上記のすべての回答を試してみましたが、最新の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
3
Ali

dotnet efデータベースの更新

上記のコマンドでエラーが発生した場合は、以下の手順を実行してください。

  1. パス%USERPROFILE%.dotnet \が存在するかどうかを確認してください
  2. そうでない場合は、以下のコマンドを実行します

dotnetツールインストール-g dotnet-ef

  1. もう一度パスを確認し、以下のパスの環境変数を設定します

%USERPROFILE%.dotnet\tool

  1. 次にcmdでデータベースコンテキストファイルが存在するパスを設定し、以下のコマンドを実行します

dotnet efデータベースの更新

注:.Net Core 3.0で動作しました

3
Darshan Dave

Jetbrains Riderでこの問題に苦しんでいる人のために、私はこのページにリストされているすべての解決策を試し、最終的にVSに入り、そこでdotnetツールのinstall --global dotnet-ef --version 3.0.0コマンドを実行し、Riderで再び開きました。動いた。

1
Sam Watson

パス修正について:

これにより、システムPATH環境変数ではなく、ユーザーPATHへのパスが追加されることに注意してください。 Visual Studioから「開発者コマンドプロンプト」または「開発者Powershell」を起動するとき、ユーザーパス変数を使用しません。システム環境変数にも追加する必要があります。

また、変更を有効にするには、VSを再起動する必要があります。

0
Randy Slavey

これは、.NET Core 3で.NET Coreからdotnet efを削除して別のパッケージにすることで行われた更新によるものです。

1-%USERPROFILE%.dotnet\toolsをPATHに追加する必要があります。

2-存在しない場合は、このコマンドを実行します

dotnet tool install -g dotnet-ef

0
Shahbaz Umer