需要更新EF核心工具


151

当我在VS 2017套件管理员控制台中使用dotnet ef工具时,收到有关需要更新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
Antonio Campagnaro

感谢您的建议,@ AntonioCampagnaro。但是,当我删除这些引用时,我仍然收到警告消息。
马克·奥尔伯特

Answers:


312

特定版本使用命令行,CmdPowerShell

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

或用于最新版本(也可以重新安装)

dotnet tool update --global dotnet-ef


2
我有3.0.0版本,第一个命令对我有用,但是第二个命令却没有。运行指定任何版本的命令时,出现以下错误:由于以下原因,工具'dotnet-ef'更新失败:无法还原该工具包...
Pippo46 '19

77
为什么他们不能只是把这个IN的错误信息!
Simon_Weaver

1
我们可能应该做一个公关一天... @Simon_Weaver
Riscie


19

在github上将此问题退回给开发团队。事实证明,这是在创建由EF Core驱动的AspNet Core站点时加载的当前工具或nuget程序包中的一个已知问题。目标是在将来的版本中修复。

目前,解决方法只是忽略警告。

还提供了另一种解决方法,包括调整csproj文件以显式定义AspNet Core Metapackage的版本-在撰写本文时,该版本最高为2.1.3-但我无法采用这种方法。我仍然不断收到警告消息。


12

尝试以下一项: Install-Package Microsoft.EntityFrameworkCore.Tools

如果仍然出现问题,请同时执行以下操作: Update-Package Microsoft.EntityFrameworkCore.Tools


3
这是一个很好的建议,但并没有为我解决问题
Banoona

为我安装了缺少的软件包,解决了一代问题,但警告仍然存在。无论哪种方式都很好。
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

我的解决方案是从Microsoft https://www.nuget.org/packages/dotnet-ef安装工具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软件包的一个已知问题,旨在解决该问题。解决方法是忽略该问题,因为(据称;我自己没有检查过)功能没有损失。
马克·奥尔伯特

这个答案也帮助了我。我安装了.NET Core SDK v2.1.403(几乎相同的版本),并且警告不再显示。您需要确保.Net core SDK和运行时都已更新,以避免此类警告,因为这些版本是最新的。在Microsoft网站上也更改了
Urls

我安装了.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:使用Packet 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。工具” Version =“” />
  • 就我而言,我继续使用“ Update-Database -Context MyElementContext”,现在一切正常。

我在Dino Esposito的“ Programming ASP.NET Core”一书中找到了这一点。

'注意此版本的CLI工具不同于该应用程序将使用的.NET Core运行时版本。运行时版本在项目文件中指定,您可以从所选IDE的用户界面中轻松地对其进行编辑。相反,如果要手动编辑项目文件,则就像编辑.csproj XML文件并更改TargetFramework元素的值一样容易。该值是指标识版本的名称(例如netcoreapp2.0)。


0

我找不到具体如何更新程序包的方法,但是在程序包管理器控制台中,我运行了“更新程序包”。它运行并更新了项目中引用的所有软件包,包括EF Core Tools。这可能对您来说并不理想,因为这可能会更新您不需要的软件包。


谢谢,@ malckier。我运行了update-package,它更新了一些东西。但是警告消息仍然出现。
马克·奥尔伯特

0

遵循本文档中的步骤可以帮助我解决问题-https://docs.oracle.com/cd/E17952_01/connector-net-zh/connector-net-entityframework-core-scaffold-example.html

在Visual Studio中使用Package Manager控制台搭建数据库

  • 打开Visual Studio并为C#创建一个新的控制台应用程序(.NET Core)。
  • 使用程序包管理器控制台为EF Core添加MySQL NuGet程序包。例如,使用以下命令添加MySql.Data.EntityFrameworkCore v8.0.13程序包:

安装包MySql.Data.EntityFrameworkCore-版本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" />
    

    打开包管理器控制台,并在提示符下输入下面的命令来创建实体和DbContextsakila数据库(调整连接字符串值以配合您的用户设置=和密码=选项):

支架-DbContext“服务器=本地主机;端口= 3306;用户=根;密码= mypass;数据库= sakila” MySql.Data.EntityFrameworkCore -OutputDir sakila -f

Visual Studio在项目内部创建一个新的sakila文件夹,其中包含映射到实体的所有表和sakilaContext.cs文件。

即使Oracle指示说EF Core 2.1不需要Microsoft.EntityFrameworkCore.Tools,我仍安装了与EF 2.2兼容的版本2.2.0。


0

类似于Martin Use命令行,Cmd或PowerShell的特定版本:

dotnet工具更新--global dotnet-ef-版本3.1.0

或用于最新版本(也可用于重新安装):

dotnet工具更新--global dotnet-ef

但是,我的电脑出现问题:“在运行命令whitout指定任何版本时,出现以下错误:由于以下原因,工具'dotnet-ef'无法更新:无法还原工具包“ Liko Pippo46

因此,我使用以下步骤:

dotnet工具卸载--global dotnet-ef但是遇到了同样的问题,所以我要转到扩展目录:C:\ Users \ Evan.dotnet \ tools.store \ dotnet-ef

我找到了旧版本(2.x),第二个问题是找不到文件fileproject.assets.json

所以我将2.x版本中的fileproject.assets.json复制到父存储库

一切都完美地完成了:

  1. dotnet工具卸载--global dotnet-ef

    删除2.x版本

  2. dotnet工具安装--global dotnet-ef

    安装3.1一个



0

在您的应用程序中,Dot.net核心库版本为2.1.2,并且您正在使用2.1.1的Entity Framework core(2.1.1)。因此,更新您的库版本,该版本应等于dot.net核心版本(2.1.2)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.