1. ホーム
  2. c#

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

2022-03-25 16:30:49

質問

私は以下のことを行っています。 ドキュメント を使用して、初期マイグレーションを作成しました。このとき dotnet というヘルプが表示され、PATHが正しく機能していることがわかります。

そして、コンソールウィンドウでdocsにある以下のコマンドを実行してみる。

<ブロッククオート

dotnet ef migrations add InitialCreate

以下のようなエラーが発生します。

指定されたコマンドまたはファイルが見つからなかったため、実行できませんでした。

考えられる理由は以下の通りです。

  • dotnet の組み込みコマンドのスペルを間違えています。

  • .NET Core プログラムを実行しようとしたが、dotnet-ef が存在しない。

  • グローバルツールを実行しようとしましたが、この名前を持つdotnet接頭辞付きの実行ファイルがPATHに見つかりませんでした。

  • コマンドをコピーしたため、最初の項目は除外しました。

  • 2番目の項目を除外したのは、パッケージ Microsoft.EntityFrameworkCore.SqlServer がインストールされています。

  • を呼び出すとヘルプセクションが表示されるので、3番目の項目は除外しました。 ドットネット .

ググっているのですが、バージョンが新しいので、あまり情報がなく、また以前のバージョンの同様の問題に溺れそうです。

を強制的にインストールしようとしたのですが Microsoft.EntityFrameworkCore 念のため、明示的に追加する必要があります。最新バージョンは2.2.6で、ダウングレードはダメだというエラーメッセージが表示されました。私のシステム上にあるSQL-packageと互換性のあるバージョンをインストールする方法がわかりません(それがこの問題を解決する正しい方法なのかどうかさえもわかりません)。

<ブロッククオート

パッケージのダウングレードを検出しました。Microsoft.EntityFrameworkCore 3.0.0-preview6.19304.10 から 2.2.6 へのダウングレードを検出しました。プロジェクトから直接パッケージを参照し、異なるバージョンを選択してください。

Web ->

Microsoft.EntityFrameworkCore.SqlServer 3.0.0-preview6.19304.10 ->

Microsoft.EntityFrameworkCore.Relational 3.0.0-preview6.19304.10 ->

Microsoft.EntityFrameworkCore (>= 3.0.0-preview6.19304.10)

Web -> Microsoft.EntityFrameworkCore (>= 2.2.6)

どのように解決するのですか?

をご覧ください。 お知らせ ASP.NET Core 3 Preview 4 では、このツールがビルトインされなくなり、明示的なインストールが必要になったことを説明しています。

<ブロッククオート

dotnet ef ツールは .NET Core SDK の一部ではなくなりました。

この変更により dotnet ef を通常の.NET CLIツールとしてインストールし、グローバルまたはローカルツールのいずれかとしてインストールすることができます。例えば、マイグレーションを管理したり、あるいは DbContext をインストールします。 dotnet ef をグローバルツールとして、以下のコマンドを入力してください。

dotnet tool install --global dotnet-ef

特定のバージョンのツールをインストールするには(利用可能なすべてのバージョンは、以下を参照してください。 nuget.org ) 、以下のコマンドを使用します。

dotnet tool install --global dotnet-ef --version 3.1.4

変更の理由については ドキュメント :

なぜ

この変更により、配布および更新される dotnet ef EF Core 3.0も常にNuGetパッケージとして配布されるのと同様に、NuGet上の通常の.NET CLIツールとして配布されます。

さらに、以下のNuGetパッケージをプロジェクトに追加する必要がある場合があります。