dotnet ef tidak ditemukan di .NET Core 3

170

Saya mengikuti dokumen untuk membuat migrasi awal. Ketika saya mengeksekusi dotnet, saya mendapatkan bagian bantuan, yang berarti bahwa PATH berfungsi dengan baik.

Kemudian saya mencoba menjalankan perintah di bawah ini dari dokumen di jendela konsol:

dotnet ef migrations add InitialCreate  

Saya mendapatkan kesalahan berikut:

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.
  • Saya mengecualikan item pertama sejak saya menyalin perintah.
  • Saya mengecualikan item kedua karena paket Microsoft.EntityFrameworkCore.SqlServer diinstal.
  • Saya mengecualikan item ketiga karena saya mendapatkan bagian bantuan ketika memohon dotnet .

Saya mencari-cari masalah tetapi karena versinya baru, tidak banyak yang bisa dilakukan dan / atau tenggelam dalam masalah serupa dari versi sebelumnya.

Saya mencoba untuk menginstal Microsoft.EntityFrameworkCore secara paksa kalau-kalau perlu ditambahkan secara eksplisit. Saya mengalami pesan kesalahan yang memberi tahu saya bahwa versi terbaru untuk dipilih adalah 2.2.6 dan penurunan versi tidak dapat dilakukan. Saya tidak yakin bagaimana menginstal versi yang kompatibel dengan paket SQL yang saya miliki di sistem saya (dan bahkan kurang yakin apakah itu pendekatan yang tepat untuk membunuh masalah ini).

Downgrade paket yang terdeteksi: Microsoft.EntityFrameworkCore dari 3.0.0-preview6.19304.10 ke 2.2.6. Referensi paket langsung dari proyek untuk memilih versi yang berbeda.
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)

Konrad Viltersten
sumber

Jawaban:

328

Lihat pengumuman untuk ASP.NET Core 3 Preview 4, yang menjelaskan bahwa alat ini tidak lagi terintegrasi dan memerlukan instalasi eksplisit:

Alat dotnet ef bukan lagi bagian dari .NET Core SDK

Perubahan ini memungkinkan kami untuk mengirim dotnet efsebagai alat .NET CLI biasa yang dapat diinstal sebagai alat global atau lokal. Misalnya, untuk dapat mengelola migrasi atau scaffold a DbContext, instal dotnet efsebagai alat global mengetik perintah berikut:

dotnet tool install --global dotnet-ef

Untuk menginstal versi alat tertentu, gunakan perintah berikut:

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

Alasan perubahan dijelaskan dalam dokumen :

Mengapa

Perubahan ini memungkinkan kami untuk mendistribusikan dan memperbarui dotnet efsebagai alat .NET CLI reguler di NuGet, konsisten dengan fakta bahwa EF Core 3.0 juga selalu didistribusikan sebagai paket NuGet.

Selain itu, Anda mungkin perlu menambahkan paket NuGet berikut ke proyek Anda:

Kirk Larkin
sumber
5
Berikut tautan ke nuget jika Anda ingin memverifikasi versi yang akan diinstal
Juan De la Cruz
2
Sekedar catatan .. [dotnet-ef --version 3.0.0] adalah yang paling kompatibel untuk [dotnet core versi 3.1.100].
Catalyst
Menginstal secara global memang mudah, tetapi Anda juga dapat menginstal alat dotnet secara lokal sekarang
Zach Esposito
Microsoft.EntityFrameworkCore.Tools tidak diperlukan.
yogihosting
9

EDIT: Jika Anda menggunakan Dockerfile untuk penyebaran, ini adalah langkah-langkah yang perlu Anda ambil untuk menyelesaikan masalah ini.

Ubah Dockerfile Anda untuk memasukkan yang berikut ini:

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

Juga ubah dotnet efperintah Anda menjadidotnet-ef

Nick Spicer
sumber
Jika masih ada, PATH tidak berfungsi, gunakan arahan ENV seperti ini: ENV PATH $ PATH: /root/.dotnet/tools
Jaliya Udagedara
4

Alat global dapat diinstal di direktori default atau di lokasi tertentu. Direktori default adalah:

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

  • Windows --->% USERPROFILE% \. Dotnet \ tools

Jika Anda mencoba menjalankan alat global, periksa bahwa variabel lingkungan PATH pada mesin Anda berisi jalur tempat Anda menginstal alat global dan bahwa executable berada di jalur itu.

Memecahkan masalah penggunaan alat .NET Core

Gambitier
sumber
Ini adalah masalah saya, ketika saya menginstal pada MacOS melalui "instal alat dotnet - global dotnet-ef" Saya mendapat prompt untuk menutup dan membuka kembali jendela terminal sehingga konfigurasi baru akan berlaku, tetapi sebenarnya folder instalasi default $ HOME / .net / tools belum ditambahkan ke variabel PATH.
Mike Dailor
Saya senang itu membantu Anda :)
Gambitier
1

Jalankan PowerShell atau command prompt sebagai Administrator dan jalankan perintah di bawah ini.

instal alat dotnet - global dotnet-ef --version 3.1.3

Surendra Yadav
sumber
0

Saya memiliki masalah yang sama. Saya menyelesaikan, menghapus semua versi di pc saya dan menginstal ulang dotnet.

Malaikat Ucan
sumber
6
Lebih cocok sebagai komentar. Harus menjelaskan cara mengatasi dan mengapa dengan sumber daya
Josh Adams
0

jika Anda menggunakan paket snap dotnet-sdk di linux ini dapat diatasi dengan memperbarui ~ .bashrc / etc. Anda sebagai berikut:

#!/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"
edencorbin
sumber
0

Bagi saya, masalahnya selesai setelah saya menutup Visual Studio dan Buka lagi

Ammar Ismaeel
sumber