dotnet ef .NET Core 3 içinde bulunamadı


171

Başlangıçta bir taşıma oluşturmak için dokümanları takip ediyorum . İdam ettiğimdedotnet , yardım bölümünü alıyorum, yani PATH düzgün çalışıyor.

Sonra konsol penceresindeki dokümanlardan aşağıdaki komutu çalıştırmayı deniyorum:

dotnet ef migrations add InitialCreate  

Aşağıdaki hatayı alıyorum:

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.
  • Komutu kopyaladığımdan beri ilk öğeyi hariç tuttum.
  • Microsoft.EntityFrameworkCore.SqlServer paketi nedeniyle ikinci öğeyi hariç tuttum yüklendiği .
  • Çağrılırken yardım bölümünü almak çünkü üçüncü madde hariç dotnet .

Sorunu googling ediyorum, ancak sürüm yeni olduğundan, devam edecek çok şey yok ve / veya önceki sürümlerden benzer konularda boğuluyor.

Microsoft.EntityFrameworkCore'u açıkça eklenmesi gerektiğinde zorla yüklemeye çalıştım . Bana en son sürüm 2.2.6 olduğunu ve bir sürüm düşürme hareketsiz olduğunu söyleyen hata mesajı ile karşılaştım. Sistemimde zaten var olan SQL paketi ile uyumlu sürümü nasıl yükleyeceğimi bilmiyorum (ve bu sorunu öldürmek için bu doğru yaklaşım daha az emin).

Paket düşürme algılandı: Microsoft.EntityFrameworkCore, 3.0.0-preview6.19304.10'dan 2.2.6'ya. Farklı bir sürüm seçmek için pakete doğrudan projeden bakın.
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)

Yanıtlar:


332

Bu aracın artık yerleşik olmadığını ve açık bir kurulum gerektirdiğini açıklayan ASP.NET Core 3 Preview 4 duyurusuna bakın :

Dotnet ef aracı artık .NET Core SDK'sının bir parçası değil

Bu değişiklik, dotnet efgenel veya yerel bir araç olarak yüklenebilen normal bir .NET CLI aracı olarak göndermemizi sağlar. Örneğin, geçişleri veya iskele a'yı yönetebilmek için DbContext, dotnet efaşağıdaki komutu yazarak genel bir araç olarak yükleyin :

dotnet tool install --global dotnet-ef

Aracın belirli bir sürümünü yüklemek için aşağıdaki komutu kullanın:

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

Değişikliğin nedeni dokümanlarda açıklanmaktadır :

Neden

Bu değişiklik dotnet ef, EF Core 3.0'ın her zaman bir NuGet paketi olarak dağıtıldığı gerçeğiyle tutarlı olarak NuGet'te normal bir .NET CLI aracı olarak dağıtmamıza ve güncellememize olanak tanır .

Ayrıca, projenize aşağıdaki NuGet paketlerini eklemeniz gerekebilir:


5
Yüklenecek sürümü doğrulamak istiyorsanız nuget bağlantısı
Juan De la Cruz

2
Sadece bir not .. [dotnet-ef --version 3.0.0], [dotnet core version 3.1.100] için en uyumlu olanıdır.
Catalyst


Microsoft.EntityFrameworkCore.Tools gerekli değildir.
yogihosting

9

DÜZENLEME: Dağıtımlar için Dockerfile kullanıyorsanız, bu sorunu gidermek için izlemeniz gereken adımlar bunlardır.

Dockerfile dosyanızı aşağıdakileri içerecek şekilde değiştirin:

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

Ayrıca dotnet efkomutlarınızıdotnet-ef


Yine de, PATH çalışmazsa, ENV yönergesini şu şekilde kullanın: ENV PATH $ PATH: /root/.dotnet/tools
Jaliya Udagedara

4

Genel araçlar varsayılan dizine veya belirli bir konuma yüklenebilir. Varsayılan dizinler:

  • Linux / macOS ---> $ HOME / .dotnet / araçlar

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

Genel bir araç çalıştırmaya çalışıyorsanız, makinenizdeki PATH ortam değişkeninin genel aracı yüklediğiniz yolu içerdiğini ve yürütülebilir dosyanın bu yolda olduğunu kontrol edin.

.NET Core aracı kullanım sorunlarını giderme


MacOS üzerine "dotnet tool install --global dotnet-ef" aracılığıyla yüklediğimde bu benim sorunumdu, yeni yapılandırmanın geçerli olması için terminal penceresini kapatıp yeniden açmam için bir komut istemi aldım, ancak aslında varsayılan kurulum klasörü $ HOME / .net / tools, PATH değişkenine eklenmedi.
Mike Dailor

Sana yardım ettiğine sevindim :)
Gambitier

1

PowerShell'i veya komut istemini Yönetici olarak çalıştırın ve aşağıdaki komutu çalıştırın.

dotnet araç kurulumu - küresel dotnet-ef - sürüm 3.1.3


0

Ben de aynı problemi yaşadım. Çözdüm, bilgisayarımdaki tüm sürümleri kaldırarak dotnet'i yeniden kurdum.


6
Yorum olarak daha uygun. Nasıl çözüleceğini ve neden kaynaklarla açıklanmalı
Josh Adams

0

linux üzerinde snapnet dotnet-sdk kullanarak bu ~ .bashrc / vb. güncelleyerek çözülebilir:

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

0

Benim için, Visual Studio kapatıp yeniden açtıktan sonra sorun çözüldü

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.