【问题标题】:Need to Update EF Core Tools需要更新 EF Core 工具
【发布时间】:2019-02-06 02:02:49
【问题描述】:

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

【问题讨论】:

标签: entity-framework-core


【解决方案1】:

特定版本使用命令行、CmdPowerShell

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

最新版本使用(也适用于重新安装)

dotnet tool update --global dotnet-ef

【讨论】:

  • 我有 3.0.0 版,第一个命令对我有用,但第二个没有。运行命令 whitout 指定任何版本时,我收到以下错误:工具 'dotnet-ef' 由于以下原因无法更新:无法恢复工具包 ...
  • 为什么他们不能把这个IN 放在错误信息中!
  • 有一天我们应该做一个公关...@Simon_Weaver
  • 见鬼,我创建了一个 PR:github.com/dotnet/efcore/pull/20792
  • 就我而言,更新到最新版本不起作用。但是从错误消息中我可以得到我必须从 3.1.6 更新到 5.0.2 的信息,所以我使用了你建议的特定更新 dotnet tool update --global dotnet-ef --version 5.0.2,并且成功了。谢谢! ;-)
【解决方案2】:

我将此问题退回给development team over on github。原来这是一个known issue,在您创建由 EF Core 提供支持的 AspNet Core 站点时加载的当前工具或 nuget 包。它的目标是在未来的版本中修复。

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

还提供了另一种解决方法,包括调整 csproj 文件以明确定义 AspNet Core 元包的版本——在我写这篇文章时,它最高为 2.1.3——但我无法让这种方法发挥作用;我仍然不断收到警告消息。

【讨论】:

    【解决方案3】:

    对我有用的解决方案是在包管理器控制台中运行以下命令:

    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/

    【讨论】:

      【解决方案4】:

      试试这个: 安装包 Microsoft.EntityFrameworkCore.Tools

      如果问题仍然存在,那么也执行这个: 更新包 Microsoft.EntityFrameworkCore.Tools

      【讨论】:

      • 这是一个很好的建议,但没有为我解决问题
      • 为我安装了一个丢失的包,解决了一代问题,但警告仍然存在。无论哪种方式都是好建议。
      【解决方案5】:

      对于 .NET 6,它会是

      dotnet tool update --global dotnet-ef --version 6.0.0
      

      【讨论】:

      • 我的最新版本dotnet tool update --global dotnet-ef --version 6.0.1
      【解决方案6】:

      我的解决方案是从 microsofthttps://www.nuget.org/packages/dotnet-ef 安装工具 dotnet-ef。它使用相同的命令但没有警告。变化是使用dotnet-ef而不是dotnet ef。

      如果你已经安装了 dotnet-ef 然后使用 dotnet tool update --global dotnet-ef --version n.n.n(n.n.n 你要更新到的版本)

      【讨论】:

        【解决方案7】:

        要解决此问题,您可以采用以下技术之一:


        • 技巧一: 使用包管理器控制台(尤其适用于 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

        【讨论】:

          【解决方案8】:

          安装新的 .NET Core SDK v2.1.401 版本并再次检查 >dotnet ef --version。我遇到了同样的问题,就我而言,这很有效。此外,您不需要添加 Microsoft.EntityFrameworkCore.Tools.DotNet。

          【讨论】:

          • 谢谢,@surbaniak。我已经这样做了。事实证明,这是当前 nuget 包的一个已知问题,旨在修复。解决方法是忽略这个问题,因为(据称;我自己没有检查过)没有功能损失。
          • 这个答案也帮助了我。我安装了 .NET Core SDK v2.1.403(几乎相同的版本)并且警告不再出现。您需要确保更新 .Net 核心 SDK 和运行时以避免此类警告,确保版本是最新的。微软网站上的网址也发生了变化,但我使用的是:microsoft.com/net/download/dotnet-core/2.1
          • 我安装了 .NET Core SKD v2.1.701 (dotnet-sdk-2.1.701-win-x64.exe) 但我仍然收到错误。
          【解决方案9】:
          • 忽略问题
          • 不要更新您的
          • 就我而言,我继续使用“Update-Database -Context MyElementContext”,现在一切正常。

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

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

          【讨论】:

            【解决方案10】:

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

            【讨论】:

            • 谢谢,@malckier。我运行了更新包,它更新了一些东西。但警告信息仍然出现。
            【解决方案11】:

            按照本文档中的步骤帮助我解决了问题 - https://docs.oracle.com/cd/E17952_01/connector-net-en/connector-net-entityframework-core-scaffold-example.html

            在 Visual Studio 中使用包管理器控制台搭建数据库

            • 打开 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)必须与您使用的实际连接器/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" />
              

              打开 Package Manager Console 并在提示符下输入以下命令,为 sakila 数据库创建实体和 DbContext(调整连接字符串值以匹配您的用户设置= 和密码= 选项):

            Scaffold-DbContext "server=localhost;port=3306;user=root;password=mypass;database=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 版本

            【讨论】:

              【解决方案12】:

              使用 dotnet CLI包管理器控制台 或访问
              更新 EF Core 工具 本站https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Tools/2.1.2

              或者你可以忽略这一点。这不是什么大问题...

              【讨论】:

                【解决方案13】:

                在您的应用程序中,Dot.net 核心库版本是 2.1.2,您正在使用 2.1.1 的实体框架核心(2.1.1)。 所以,更新你的库版本,它应该等于 dot.net 核心版本(2.1.2)。

                【讨论】:

                  【解决方案14】:

                  像马丁一样 针对特定版本使用命令行、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 tool install --global dotnet-ef

                    安装 3.1 一个

                  【讨论】:

                    【解决方案15】:

                    我多次收到此错误,我的包在 NuGet 包管理器中是最新的 所以我用记事本修改(.csproj)到所需的版本,它解决了我的问题。

                    【讨论】:

                    • 你不应该这样做,更不用说推荐它了。这里几乎所有的答案都有更好的解决方案,也应该适用于您的情况。
                    猜你喜欢
                    • 1970-01-01
                    • 2020-04-11
                    • 2020-02-21
                    • 1970-01-01
                    • 1970-01-01
                    • 2023-03-16
                    • 1970-01-01
                    • 2019-03-13
                    相关资源
                    最近更新 更多