1. ホーム
  2. c#

[解決済み] コマンド 'dotnet ef' が見つかりません。

2023-01-05 06:13:38

質問

私は、.NET Core 2.0を使用しています。 アーキリナックス / Visual Studio Code を使用しており 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 マックOS の場合、シェルの設定に一行追加してください。

  • bash zsh :

    export PATH="$PATH:$HOME/.dotnet/tools/"
    
    
  • csh tcsh :

    set path = ($path $HOME/.dotnet/tools/)
    
    

新しいシェル/ターミナルを起動したとき(または次回ログインしたとき)に dotnet ef は動作するはずです。

については Windows :

参照 この質問 に追加する方法については PATH 環境変数に追加する方法を教えてください。

を追加する必要があります。 %USERPROFILE%\.dotnet\toolsPATH .

どうしたんですか?

この障害は、.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 .

しかし、docsのこの部分にも注目してください。

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

つまり、何かが間違っていたようです。手動で tarball を使用してインストールした場合は、SDK が失敗したので、このバグを Microsoft に報告する必要があります。配布パッケージを使用した場合、SDK は失敗したので、これをバグとして報告する必要があります。