Потрібно оновити основні інструменти EF


151

Коли я використовую інструменти dotnet ef у консолі VS 2017 Package Manager, я отримую попереджувальне повідомлення про необхідність оновлення інструментів EF Core:

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

Але в моєму файлі csproj є такий запис:

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

Я підтвердив, що встановлена ​​версія насправді застаріла:

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

То що мені робити для оновлення інструментів? До речі, я бачив в інших відповідях, що застарілий файл global.json може спричинити цю проблему. Але у мене в рішенні ніде немає файлу global.json.


Я думаю, ви можете видалити посилання на DotNetCliToolReference, github.com/aspnet/EntityFramework.Docs/issues/708
Антоніо Кампаньяро,

Подяка за пропозицію, @AntonioCampagnaro. Але коли я видаляю ці посилання, я все одно отримую попереджувальне повідомлення.
Марк Олберт,

1
Оновіть його за допомогою консолі керування пакетами, як ця відповідь
Себастьян Феррарі,

Відповіді:


314

Використовуйте командний рядок, Cmd або PowerShell для певної версії:

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

або для використання останньої версії (працює також для перевстановлення) :

dotnet tool update --global dotnet-ef


2
У мене була версія 3.0.0, і перша команда працювала для мене, а друга - ні. Під час запуску команди whitout із зазначенням будь-якої версії я отримав таку помилку: Інструмент 'dotnet-ef' не вдалось оновити через наступне: Пакет інструментів не вдалося відновити ...
Pippo46

77
Чому вони не можуть просто поставити це У повідомленні про помилку!
Simon_Weaver

1
нам, мабуть, слід зробити пр. одного дня ... @Simon_Weaver
Riscie

13
Чорт, я створив PR: github.com/dotnet/efcore/pull/20792
Ріссі

19

Я передав цю проблему команді розробників на github . Виявляється, це відома проблема у поточних пакетах інструментів або nuget, які завантажуються під час створення веб-сайту AspNet Core на базі EF Core. Її потрібно виправити в майбутньому випуску.

Наразі обхідним шляхом є просто ігнорування попередження.

Також пропонується ще одне обхідне рішення, яке включає налаштування файлу csproj, щоб чітко визначити версію метапакета AspNet Core - це до 2.1.3, поки я пишу це - але я не зміг отримати такий підхід до роботи; Я все ще отримував попереджувальне повідомлення.


12

Спробуйте це: Install-Package Microsoft.EntityFrameworkCore.Tools

Якщо проблема все-таки виникає, виконайте також це: Update-Package Microsoft.EntityFrameworkCore.Tools


3
Це хороша пропозиція, але мені не вдалося вирішити проблему .
Бануна,

Встановив для мене відсутні пакети, вирішив проблему одного покоління, але попередження залишається. У будь-якому випадку хороша пропозиція.
dyslexicanaboko

12

Рішення, яке працювало для мене, виконує такі команди в консолі диспетчера пакетів:

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

Переконайтесь, що версія відповідає версії повідомлення про помилку, у моєму випадку я отримав таку помилку:

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.

Перевірте версії, доступні на такому веб-сайті: https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/


3

Моїм рішенням було встановити інструмент dotnet-ef з Microsoft https://www.nuget.org/packages/dotnet-ef . Він використовує ті самі команди, але жодних попереджень. Зміна полягає у використанні dotnet-ef замість dotnet ef.

А якщо у вас вже встановлений dotnet-ef, використовуйте dotnet tool update --global dotnet-ef --version n.n.n(nnn вашу версію для оновлення)


2

Встановіть нову версію .NET Core SDK v2.1.401 і ще раз перевірте> dotnet ef --version. У мене була та сама проблема, і в моєму випадку це спрацювало. Крім того, вам не потрібно додавати Microsoft.EntityFrameworkCore.Tools.DotNet.


Подяка, @surbaniak. Я це вже зробив. Виявляється, це відома проблема з поточними пакетами nuget і призначена для виправлення. Вихідним шляхом є просто ігнорувати проблему, оскільки (нібито; я не перевіряв це сам) немає втрати функціональності.
Mark Olbert

Ця відповідь також допомогла мені. Я встановив .NET Core SDK v2.1.403 (майже таку саму версію), і попередження більше не відображалося. Вам потрібно переконатись, що як .Net core SDK, так і час виконання оновлені, щоб уникнути таких попереджень про те, що версії оновлені. URL-адреси також змінюються на веб-сайті Microsoft, але я використовував: microsoft.com/net/download/dotnet-core/2.1
Tore Aurstad

Я встановив .NET Core SKD v2.1.701 (dotnet-sdk-2.1.701-win-x64.exe), але помилка все ще з’являється.
Patee Gutee

2

Для вирішення цього питання ви можете дотримуватися однієї з наступних методик:


  • Техніка 1: Використання консолі диспетчера пакетів (особливо для користувачів Microsoft Visual Studio)
    PM >Install-Package Microsoft.EntityFrameworkCore.Tools -Version 2.1.2

  • Техніка 2: Використання .NET CLI
    >dotnet add package Microsoft.EntityFrameworkCore.Tools --version 2.1.2

  • Техніка 3: Використання посилань на пакунки

<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.2">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
  • Техніка 4: Використання пакетного CLI
    >paket add Microsoft.EntityFrameworkCore.Tools --version 2.1.2

Пам’ятайте: для використання цієї версії вам потрібен NuGet 3.6 або вище.
Посилання на посилання: https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Tools/2.1.2


1
  • Ігноруйте проблему
  • Не оновлюйте <PackageReference Include = "Microsoft. EntityFrameworkCore. Інструменти" Версія = "" />
  • У моєму випадку я просунувся вперед із "Update-Database -Context MyElementContext", і тепер все працює нормально.

Я знайшов це у книзі Діно Еспозіто "Програмування ASP.NET Core".

'Примітка. Ця версія інструменту CLI не є такою ж, як версія середовища виконання .NET Core, яку буде використовувати програма. Версія середовища виконання вказана у файлі проекту, і ви можете з комфортом редагувати її з інтерфейсу користувача обраної середовища розробки. Якщо ви хочете замість цього відредагувати файл проекту вручну, то це так само просто, як редагування XML-файлу .csproj та зміна значення елемента TargetFramework. Значення стосується монікера, який ідентифікує версію (наприклад, netcoreapp2.0). '


0

Я не міг знайти, як конкретно оновити пакет, але в консолі диспетчера пакетів я запустив "update-package". Він провів і оновив усі пакунки, на які посилається проект, включаючи EF Core Tools. Це може бути не ідеальним для вас, оскільки це може оновити пакети, яких ви не хотіли.


Подяка, @malckier. Я запустив пакет оновлення, і він оновив деякі речі. Але попереджувальне повідомлення все-таки з’явилося.
Mark Olbert

0

Виконання кроків у цьому документі допомогло мені вирішити проблему - https://docs.oracle.com/cd/E17952_01/connector-net-en/connector-net-entityframework-core-scaffold-example.html

Обробка бази даних за допомогою консолі диспетчера пакетів у Visual Studio

  • Відкрийте Visual Studio і створіть нову консольну програму (.NET Core) для C #.
  • Додайте пакет MySQL NuGet для EF Core за допомогою консолі диспетчера пакетів. Наприклад, використовуйте таку команду, щоб додати пакет MySql.Data.EntityFrameworkCore v8.0.13:

Install-Package MySql.Data.EntityFrameworkCore -Version 8.0.13

Важливо

Версія (наприклад, -Version 8.0.13) повинна відповідати фактичній версії Connector / NET, яку ви використовуєте. Для поточної інформації про версію.

  • Встановіть наступні пакети NuGet, вибравши Консоль диспетчера пакетів або Керування пакетами NuGet для рішення з Інструменти, а потім меню Менеджера пакетів NuGet:

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

    Open Package Manager Console і введіть наступну команду в командному рядку для створення об'єктів і DbContextдля sakilaбази даних (налаштувати значення на з'єднання стрічки відповідно до настройками для користувача = і пароль = опцію):

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

Visual Studio створює нову папку sakila всередині проекту, яка містить усі таблиці, зіставлені з сутностями, та файл sakilaContext.cs.

Незважаючи на те, що в інструкціях Oracle сказано, що Microsoft.EntityFrameworkCore.Tools не потрібен для EF Core 2.1, я встановив версію 2.2.0, сумісну з EF 2.2


0

Як і Martin, використовуйте командний рядок, Cmd або PowerShell для певної версії:

оновлення інструменту dotnet --global dotnet-ef --version 3.1.0

або для використання останньої версії (працює також для перевстановлення):

оновлення інструменту dotnet --global dotnet-ef

Але у мене на ПК є проблеми: "Під час запуску команди без зазначення будь-якої версії я отримав таку помилку: Інструмент 'dotnet-ef' не вдалось оновити через наступне: Пакет інструментів не вдалося відновити" Liko Pippo46

Отже, я використовую такі кроки:

dotnet tool uninstall --global dotnet-ef Але у мене така сама проблема, тому я перейду до каталогу розширення: C: \ Users \ Evan.dotnet \ tools.store \ dotnet-ef

І я знайшов стару версію (2.x) І моєю другою проблемою був файл fileproject.assets.json не знайдено

Тож я копіюю файлproject.assets.json у версії 2.x у батьківське сховище

І все було зроблено чудово:

  1. видалення інструменту dotnet --global dotnet-ef

    видаляє версію 2.x

  2. інсталяція інструменту dotnet --global dotnet-ef

    встановіть 3.1


0

Оновіть інструменти EF Core, використовуючи dotnet CLI або консоль диспетчера пакетів, або відвідавши
цей сайт https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Tools/2.1.2

Або ви можете проігнорувати це. Це не велика проблема ...


0

У вашому додатку версія базової бібліотеки Dot.net - 2.1.2, і ви працюєте над 2.1.1 ядра Entity framework (2.1.1). Отже, оновіть свою бібліотечну версію, яка має дорівнювати базовій версії dot.net (2.1.2).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.