EF Core Araçlarının Güncellenmesi Gerekiyor


142

VS 2017 Paket Yöneticisi Konsolunda dotnet ef araçlarını kullandığımda, EF Core araçlarının güncellenmesi gerektiğiyle ilgili bir uyarı iletisi alıyorum:

PM> dotnet ef migrations list -s ../RideMonitorSite

The EF Core tools version '2.1.1-rtm-30846' is older than that of the runtime '2.1.2-rtm-30932'. Update the tools for the latest features and bug fixes.
20180831043252_Initial

Ama csproj dosyamda şu giriş var:

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.1.2" />
  </ItemGroup>

Yüklenen sürümün aslında güncel olmadığını doğruladım:

PM> dotnet ef --version
Entity Framework Core .NET Command-line Tools
2.1.1-rtm-30846

Peki araçları güncellemek için ne yapmalıyım? BTW, diğer yanıtlarda güncel olmayan bir global.json dosyasının bu soruna neden olabileceğini gördüm. Ancak çözümün hiçbir yerinde global.json dosyam yok.



Öneri için teşekkürler, @AntonioCampagnaro. Ancak bu referansları kaldırdığımda hala uyarı mesajı alıyorum.
Mark Olbert

Yanıtlar:


281

Belirli bir sürüm için komut satırı, Cmd veya PowerShell kullanın :

dotnet tool update --global dotnet-ef --version 3.1.0

veya en son sürüm kullanımı için (yeniden kurulum için de çalışır) :

dotnet tool update --global dotnet-ef


2
3.0.0 sürümüne sahiptim ve ilk komut benim için çalıştı, ancak ikincisi işe yaramadı. Herhangi bir sürümü belirtmeden komutu çalıştırırken aşağıdaki hatayı aldım: 'dotnet-ef' aracı aşağıdakilerden dolayı güncellenemedi: Araç paketi geri yüklenemedi ...
Pippo46

65
Neden sadece bu koyamazsınız İÇİNDE hata mesajı!
Simon_Weaver

1
muhtemelen bir gün pr yapmalıyız ... @Simon_Weaver
Riscie


19

Bu sorunu github üzerinden geliştirme ekibine ilettim . Bunun, EF Core destekli bir AspNet Core sitesi oluşturduğunuzda yüklenen mevcut araçlarda veya nuget paketlerinde bilinen bir sorun olduğu ortaya çıktı. Gelecekteki bir sürümde düzeltilmesi hedefleniyor.

Şimdilik, geçici çözüm sadece uyarıyı görmezden gelmektir.

AspNet Core meta paketinin sürümünü açık bir şekilde tanımlamak için csproj dosyasını değiştirmeyi içeren başka bir geçici çözüm de sunuluyor - bunu yazarken 2.1.3'e kadar çıkıyor - ancak bu yaklaşımı işe yaramadı; Hala uyarı mesajı almaya devam ettim.


12

Benim için işe yarayan çözüm, Paket Yöneticisi Konsolunda aşağıdaki komutları çalıştırıyor:

PM> Install-Package Microsoft.EntityFrameworkCore -Version 2.1.11
PM> Install-Package Microsoft.EntityFrameworkCore.Tools -Version 2.1.11

Aşağıdaki hatayı aldım benim durumumda sürümün hata mesajındaki sürümle eşleştiğinden emin olun:

The EF Core tools version '2.1.1-rtm-30846' is older than that of the runtime '2.1.11-servicing-32099'. Update the tools for the latest features and bug fixes.

Aşağıdaki sitede bulunan sürümleri kontrol edin: https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/


11

Bunu deneyin: Install-Package Microsoft.EntityFrameworkCore.Tools

Sorun devam ederse, şunu da yürütün: Update-Package Microsoft.EntityFrameworkCore.Tools


3
Bu iyi bir öneri, ancak sorunu benim için çözmedi .
Banoona

Benim için eksik bir paket yükledim, bir nesil problemi çözdü, ancak uyarı devam ediyor. Her iki durumda da iyi bir öneri.
dyslexicanaboko

3

Çözümüm, dotnet-ef aracını microsoft https://www.nuget.org/packages/dotnet-ef adresinden kurmaktı . Aynı komutları kullanır ancak uyarı vermez. Değişiklik, dotnet ef yerine dotnet-ef kullanmaktır.

Ve zaten dotnet-ef yüklüyse, dotnet tool update --global dotnet-ef --version n.n.n(güncellemek için sürümünüz nnn) kullanın


2

Yeni bir .NET Core SDK v2.1.401 sürümü kurun ve> dotnet ef --version öğesini tekrar kontrol edin. Aynı sorunu yaşadım ve benim durumumda işe yaradı. Ayrıca Microsoft.EntityFrameworkCore.Tools.DotNet eklemenize gerek yoktur.


Thanx, @surbaniak. Bunu zaten yapmıştım. Bunun mevcut nuget paketlerinde bilinen bir sorun olduğu ve düzeltilmesi hedeflendiği ortaya çıktı. Çözüm, (iddia edildiği gibi; bunu kendim kontrol etmedim) işlevsellik kaybı olmadığı için sorunu görmezden gelmektir.
Mark Olbert

Bu cevap bana da yardımcı oldu. .NET Core SDK v2.1.403'ü (hemen hemen aynı sürüm) yükledim ve artık uyarı görünmedi. Sürümlerin güncel olduğuna dair böyle bir uyarıyı önlemek için hem .Net çekirdek SDK'sının hem de çalışma zamanının güncellendiğinden emin olmanız gerekir. Url'ler Microsoft web sitesinde de değiştirildi, ancak kullandım: microsoft.com/net/download/dotnet-core/2.1
Tore Aurstad

.NET Core SKD v2.1.701'i (dotnet-sdk-2.1.701-win-x64.exe) yükledim ama hala hatayı alıyorum.
Patee Gutee

2

Bu Sorunu Çözmek İçin Aşağıdaki Tekniklerden Birini İzleyebilirsiniz:


  • Teknik 1: Paket Yöneticisi Konsolunu Kullanma (Özellikle Microsoft Visual Studio kullanıcıları için)
    ÖS >Install-Package Microsoft.EntityFrameworkCore.Tools -Version 2.1.2

  • Teknik 2: .NET CLI Kullanımı
    >dotnet add package Microsoft.EntityFrameworkCore.Tools --version 2.1.2

  • Teknik 3: Paket Referansını Kullanma

<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.2">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
  • Teknik 4: Paket CLI Kullanımı
    >paket add Microsoft.EntityFrameworkCore.Tools --version 2.1.2

Unutmayın: Bu sürümün kullanılması için NuGet 3.6 veya sonraki bir sürüme ihtiyacınız vardır .
Referans Bağlantısı: https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Tools/2.1.2


1
  • Sorunu görmezden gelin
  • <PackageReference Include = "Microsoft. EntityFrameworkCore. Tools" Version = "" /> güncellemeyin
  • Benim durumumda, 'Update-Database -Context MyElementContext' ile ilerledim ve şimdi her şey iyi çalışıyor.

Bunu Dino Esposito'nun 'Programming ASP.NET Core' kitabında buldum.

Not CLI araçlarının bu sürümü, uygulamanın kullanacağı .NET Core çalışma zamanı sürümüyle aynı değildir. Çalışma zamanı sürümü proje dosyasında belirtilmiştir ve bunu seçtiğiniz IDE'nin kullanıcı arayüzünden rahatça düzenleyebilirsiniz. Bunun yerine, proje dosyasını manuel olarak düzenlemek istiyorsanız, .csproj XML dosyasını düzenlemek ve TargetFramework öğesinin değerini değiştirmek kadar kolaydır. Değer, sürümü tanımlayan takma adıyla ilgilidir (örneğin, netcoreapp2.0). '


0

Paketi özel olarak nasıl güncelleyeceğimi bulamadım ama Paket Yöneticisi Konsolunda 'güncelleme paketi' çalıştırdım. EF Core Araçları da dahil olmak üzere bir projede başvurulan tüm paketleri çalıştırdı ve güncelledi. İstemediğiniz paketleri güncelleyebileceği için bu sizin için ideal olmayabilir.


Thanx, @malckier. Güncelleme paketini çalıştırdım ve bazı şeyleri güncelledim. Ancak uyarı mesajı yine de görünüyordu.
Mark Olbert

0

Bu belgedeki adımları takip etmek sorunu çözmeme yardımcı oldu - https://docs.oracle.com/cd/E17952_01/connector-net-en/connector-net-entityframework-core-scaffold-example.html

Visual Studio'da Paket Yöneticisi Konsolu Kullanarak Veritabanını İskele Oluşturma

  • Visual Studio'yu açın ve C # için yeni bir Konsol Uygulaması (.NET Core) oluşturun.
  • Paket Yöneticisi Konsolu'nu kullanarak EF Core için MySQL NuGet paketini ekleyin. Örneğin, MySql.Data.EntityFrameworkCore v8.0.13 paketini eklemek için aşağıdaki komutu kullanın:

Install-Package MySql.Data.EntityFrameworkCore -Version 8.0.13

Önemli

Sürüm (örneğin, -Version 8.0.13) kullandığınız gerçek Bağlayıcı / NET sürümüyle eşleşmelidir. Güncel sürüm bilgileri için.

  • Araçlar ve ardından NuGet Paket Yöneticisi menüsünden Paket Yöneticisi Konsolu veya Çözüm için NuGet Paketlerini Yönet öğesini seçerek aşağıdaki NuGet paketlerini yükleyin:

    Microsoft.EntityFrameworkCore.Design
    
    EF Core 1.1 only: Also add the MySql.Data.EntityFrameworkCore.Design package.
    
    Microsoft.EntityFrameworkCore.Tools version 1.1.6 (for EF Core 1.1) and Microsoft.EntityFrameworkCore.Tools version 2.0.3 (for EF Core 2.0)
    Note
    
    The .NET tools are included in the .NET Core 2.1 SDK and not required or supported for EF Core 2.1. If this is an upgrade, remove the reference to that package from the .csproj file (version 2.0.3 in this example) :
    
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />
    

    Açık Paket Yöneticisi Konsolu ve nesneler yaratmak için isteminde aşağıdaki komutu girin ve DbContextiçin sakilaveritabanı (sizin kullanıcının ayarlarını = ve parola = seçenekleri eşleştirmek için bağlantı dizesi değerlerini ayarlayın):

Scaffold-DbContext "server = localhost; port = 3306; user = root; password = mypass; veritabanı = sakila" MySql.Data.EntityFrameworkCore -OutputDir sakila -f

Visual Studio, proje içinde varlıklarla eşlenen tüm tabloları ve sakilaContext.cs dosyasını içeren yeni bir sakila klasörü oluşturur.

Oracle talimatları EF Core 2.1 için Microsoft.EntityFrameworkCore.Tools gerekli olmadığını söylese de EF 2.2 ile uyumlu 2.2.0 sürümünü yükledim


0

Martin gibi belirli sürüm için komut satırı, Cmd veya PowerShell kullanın:

dotnet tool update --global dotnet-ef --version 3.1.0

veya en son sürüm kullanımı için (yeniden yükleme için de çalışır):

dotnet aracı güncellemesi --global dotnet-ef

Ancak, bilgisayarımda bir sorun var: "Herhangi bir sürümü belirtmeden komutu çalıştırırken aşağıdaki hatayı aldım: 'dotnet-ef' aracı aşağıdakilerden dolayı güncellenemedi: Araç paketi geri yüklenemedi" Liko Pippo46

Bu yüzden şu adımları kullanıyorum:

dotnet tool uninstall --global dotnet-ef Ama aynı sorunu yaşadım, bu yüzden uzantının dizinine gidiyorum: C: \ Users \ Evan.dotnet \ tools.store \ dotnet-ef

Ve eski sürümü (2.x) buldum ve ikinci sorunum fileproject.assets.json dosyasının bulunamamasıydı

Bu yüzden 2.x sürümündeki fileproject.assets.json dosyasını ana depoya kopyalıyorum

Ve her şey mükemmel bir şekilde yapıldı:

  1. dotnet tool uninstall --global dotnet-ef

    2.x sürümünü kaldırır

  2. dotnet tool install --global dotnet-ef

    3.1'i kur



0

Uygulamanızda, Dot.net çekirdek kitaplığı sürümü 2.1.2 ve Entity çerçeve çekirdeğinin (2.1.1) 2.1.1'i üzerinde çalışıyorsunuz. Bu nedenle, dot.net çekirdek sürümüne (2.1.2) eşit olması gereken kitaplık sürümünüzü güncelleyin.

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.