需要更新EF核心工具

时间:2018-08-31 04:53:54

标签: entity-framework-core

当我在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文件。

13 个答案:

答案 0 :(得分:16)

我将此问题退回给development team over on github。事实证明,这是当前工具或nuget软件包中的known issue,当您创建由EF Core驱动的AspNet Core站点时,这些软件包会被加载。它的目标是在将来的版本中修复。

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

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

答案 1 :(得分:6)

使用命令行, Cmd PowerShell 用于特定版本:

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

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

dotnet tool update --global dotnet-ef

答案 2 :(得分:3)

尝试以下方法: 安装包Microsoft.EntityFrameworkCore.Tools

如果问题仍然存在,则请执行以下操作: 更新包Microsoft.EntityFrameworkCore.Tools

答案 3 :(得分:2)

安装新的.NET Core SDK v2.1.401版本,然后再次检查> dotnet ef --version。我遇到了同样的问题,在我看来,这是可行的。另外,您无需添加Microsoft.EntityFrameworkCore.Tools.DotNet。

答案 4 :(得分: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

答案 5 :(得分:1)

我的解决方案是从Microsoft https://www.nuget.org/packages/dotnet-ef安装工具dotnet-ef。它使用相同的命令,但没有警告。更改是使用dotnet-ef代替dotnet ef。

答案 6 :(得分:0)

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

答案 7 :(得分:0)

  • 忽略问题
  • 请勿更新您的
  • 就我而言,我继续使用“ Update-Database -Context MyElementContext”,现在一切正常。

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

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

答案 8 :(得分:0)

遵循本文档中的步骤可以帮助我解决问题-https://docs.oracle.com/cd/E17952_01/connector-net-en/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 -Version 8.0.13

重要

版本(例如-Version 8.0.13)必须与您使用的实际Connector / NET版本匹配。有关当前版本的信息。

  • 通过选择以下软件包来安装以下NuGet软件包 管理器控制台或通过工具管理解决方案的NuGet软件包 然后选择NuGet Package Manager菜单:

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

    打开 Package Manager控制台,然后在提示符下输入以下命令以创建实体,并为DbContext数据库创建sakila(调整连接字符串值以匹配您的user =和password =选项的设置):

  

Scaffold-DbContext“服务器=本地主机;端口= 3306;用户= root;密码= 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

答案 9 :(得分:0)

最适合我的解决方案是在Package Manager控制台中运行以下命令:

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/

答案 10 :(得分:0)

像马丁 对特定版本使用命令行,Cmd或PowerShell:

dotnet工具更新--global dotnet-ef --version 3.1.0

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

dotnet工具更新--global dotnet-ef

但是,我的电脑出现问题: “在运行指定任何版本的命令时,出现以下错误:由于以下原因,工具'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版本

答案 11 :(得分:0)

使用 dotnet CLI Package Manager控制台更新EF Core工具或访问
这个网站https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Tools/2.1.2

否则您可能会忽略。这不是大问题...

答案 12 :(得分:0)

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

相关问题