.NET Core 3にdotnet efが見つかりません


170

初期移行を作成するために、ドキュメントに従っています。を実行するdotnetと、ヘルプセクションが表示されます。これは、PATHが適切に機能することを意味します。

次に、コンソールウィンドウのドキュメントから以下のコマンドを実行してみます。

dotnet ef migrations add InitialCreate  

次のエラーが発生します。

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.
  • コマンドをコピーしたため、最初の項目を除外しました。
  • Microsoft.EntityFrameworkCore.SqlServerパッケージがインストールされているため、2番目の項目を除外しました。
  • dotnetを呼び出すとヘルプセクションが表示されるため、3番目の項目を除外しました。

私は問題をグーグルで調べていますが、バージョンが新しいので、続行することは多くないか、以前のバージョンからの同様の問題で溺れています。

明示的に追加する必要がある場合に備えて、Microsoft.EntityFrameworkCoreを強制的にインストールしようとしました。選択する最新バージョンは2.2.6であり、ダウングレードは不可であるというエラーメッセージが表示されました。自分のシステムに既に持っているSQLパッケージと互換性のあるバージョンをインストールする方法がわかりません(この問題を解決するための適切なアプローチであるかどうかはさらにわかりません)。

検出されたパッケージのダウングレード:3.0.0-preview6.19304.10から2.2.6へのMicrosoft.EntityFrameworkCore プロジェクトから直接パッケージを参照して、別のバージョンを選択します。
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)

回答:


328

ASP.NET Core 3 Preview 4 の発表を参照してください。このツールは、組み込みではなく、明示的なインストールが必要であることを説明しています。

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

この変更によりdotnet ef、グローバルツールまたはローカルツールとしてインストールできる通常の.NET CLIツールとして出荷できます。たとえば、移行を管理したり、を足場したりするには、次のコマンドを入力してグローバルツールとしてDbContextインストールdotnet efします。

dotnet tool install --global dotnet-ef

ツールの特定のバージョンをインストールするには、次のコマンドを使用します。

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

変更の理由はドキュメントで説明されています:

なぜ

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

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


5
インストールするバージョンを確認する場合のnugetへのリンクは次のとおりです
Juan De la Cruz

2
ただのメモです。[dotnet-ef --version 3.0.0]は[dotnet core version 3.1.100]と最も互換性があります。
Catalyst

世界的にインストールすると便利ですが、あなたもすることができますローカルDOTNETツールをインストールし、今
ザックエスポジト

Microsoft.EntityFrameworkCore.Toolsは必要ありません。
ヨギホスティング

9

編集:デプロイメントにDockerfileを使用している場合、これらはこの問題を解決するために必要な手順です。

Dockerfileを次のように変更します。

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
ENV PATH $PATH:/root/.dotnet/tools
RUN dotnet tool install -g dotnet-ef --version 3.1.1

また、dotnet efコマンドを次のように変更しますdotnet-ef


それでもPATHが機能しない場合は、次のようにENVディレクティブを使用します。ENV PATH $ PATH:/root/.dotnet/tools
Jaliya Udagedara

4

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

  • Linux / macOS ---> $ HOME / .dotnet / tools

  • Windows --->%USERPROFILE%\。dotnet \ tools

グローバルツールを実行しようとしている場合は、マシンのPATH環境変数にグローバルツールをインストールしたパスが含まれていること、および実行可能ファイルがそのパスにあることを確認してください。

.NET Coreツールの使用に関する問題のトラブルシューティング


これは私の問題でした。「dotnet tool install --global dotnet-ef」を介してMacOSにインストールすると、ターミナルウィンドウを閉じて再度開くように求められたため、新しい構成が有効になりますが、実際にはデフォルトのインストールフォルダー$ HOME / .net / toolsはPATH変数に追加されていませんでした。
Mike Dailor


1

管理者としてPowerShellまたはコマンドプロンプトを実行し、以下のコマンドを実行します。

dotnet tool install --global dotnet-ef --version 3.1.3


0

同じ問題がありました。私は解決し、私のPCのすべてのバージョンをアンインストールしてから、dotnetを再インストールしました。


6
コメントとして適しています。リソースで解決する方法と理由を説明する必要がある
Josh Adams

0

Linuxでスナップパッケージdotnet-sdkを使用している場合、これは〜.bashrc /などを次のように更新することで解決できます。

#!/bin/bash
export DOTNET_ROOT=/snap/dotnet-sdk/current
export MSBuildSDKsPath=$DOTNET_ROOT/sdk/$(${DOTNET_ROOT}/dotnet --version)/Sdks
export PATH="${PATH}:${DOTNET_ROOT}"
export PATH="$PATH:$HOME/.dotnet/tools"

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.