【问题标题】:Version for package `Microsoft.EntityFrameworkCore.Tools.DotNet` could not be resolved无法解决包“Microsoft.EntityFrameworkCore.Tools.DotNet”的版本
【发布时间】:2017-09-08 14:24:11
【问题描述】:

我正在将一个新的 .NET Core 应用程序部署到我的服务器。我正在尝试运行 EntityFramework 迁移,因为该项目是使用“代码优先”方法创建的。

要运行的命令是

dotnet ef 数据库更新

使用 Visual Studio 在本地进行迁移没有问题,但是,在服务器上,我收到错误;

无法解析软件包 Microsoft.EntityFrameworkCore.Tools.DotNet 的版本。

我的DotNet开发机上的版本是1.0.0

我的DotNet服务器上的版本是1.0.1

我的项目使用的是.csproj文件(不是project.json,好像已经不用了)。

我已经添加了对 csproj 文件的引用,但不管是哪个版本,我仍然会收到上述错误。

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0" />
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.1" />
  </ItemGroup>

更新

基本上我已经尝试使用 NUGET 从命令行安装 Microsoft.EntityFrameworkCore.Tools.DotNet:

C:\Program Files (x86)\Jenkins\workspace\api.XXX.com\XXXProject>nuget i 安装 Microsoft.EntityFrameworkCore.Tools.DotNet

然后我收到以下信息:

警告:安装失败。滚回来... 执行 nuget 操作耗时 13.44 秒 包“Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.0”的包类型为“D” 项目 'C:\Program Files (x86)\Jenkins\w 不支持的 otnetCliTool' orkspace\api.XXX.com\XXXProject'.`

然后,如果我运行 dotnet ef 命令,我会得到:

C:\Program Files (x86)\Jenkins\workspace\api.desully.com\deSullyAPI_Core>dotnet ef 更新数据库

无法解析包Microsoft.EntityFrameworkCore.Tools.DotNet 的版本。

更新 #2

我注意到我的开发机器中的 SDK 版本与服务器上的版本不同

开发箱

生产箱

我假设问题是 1.0.1 中没有 Microsoft.EntityFrameworkCore.Tools.DotNet?旧版本会这样是不是很奇怪?

更新 3

所以仅供参考 - 我去了Microsoft Site 尝试下载 SDK 的 1.0.0 版本(因为它似乎没有安装在我的服务器上)。不幸的是,MS 网站似乎强制向我提供 1.0.1 版本(其中不包含我需要的 EF 内容?)。

我尝试将 1.0.0 目录从我的开发箱复制到生产服务器,但这似乎也不起作用。我在这里错过了什么?

【问题讨论】:

    标签: c# .net-core entity-framework-core


    【解决方案1】:

    没有Microsoft.EntityFrameworkCore.Tools.DotNet1.0.1 版本(在撰写本文时)。您需要设置Version="1.0.0"才能恢复包。

    可用版本为listed on NuGet

    更新:

    要使用 CLI 工具,您首先需要添加您已有的 &lt;DotNetCliToolReference&gt; 项目。

    然后调用项目目录下的dotnet restore将包下载到本地缓存,工具就可以使用了,dotnet ef就可以使用了。

    【讨论】:

    • 我只是在里面尝试不同的数字 - 但对于 1.0.0 也有同样的问题。
    • 那么请提供更多细节:执行了哪些工具/命令?确切的错误信息是什么?等
    • 更新了答案。请注意,一旦您的项目拥有所需的所有引用,就无需调用nuget install
    • 马上行动!这就是答案。注意 - 如果有人恢复到 1.0.0,当您运行“dotnet ef update database”时,您将收到一条错误消息,要求您输入 project.json 文件确保安装 1.0.1,然后运行 ​​dotnet restore,然后运行数据库更新命令。
    • 我第一次在错误的文件夹中运行了一个 dotnet 命令,所以当我在正确的文件夹中运行它时,我得到了这个错误。 “dotnet restore”已修复,谢谢。
    【解决方案2】:

    对我来说(.NET Core 2.0.3)有帮助的是发布:

    dotnet add package Microsoft.EntityFrameworkCore.Design

    然后

    dotnet restore

    这将Microsoft.EntityFrameworkCore.Tools.DotNet 安装在正确的版本中

    【讨论】:

    • 正在升级 2.0 > netcoreapp2.2。遇到同样的问题,谢谢。
    • 谢谢,这也解决了我的问题。我正在使用netcore 3.1.2。因此,为了能够使用迁移,我们需要: - 安装 dotnet-ef 工具 - 安装 Microsoft.EntityFrameworkCore.DesignMicrosoft.EntityFrameworkCore.Tools.DotNet - 将 CLI 工具引用添加到 Microsoft.EntityFrameworkCore.Tools.DotNet
    【解决方案3】:

    在我的案例中起作用的是使用包括 Microsoft.EntityFrameworkCore.Tools.DotNet Version="2.1.0-preview1-final 在内的 cli,然后在 dotnet restore 之后使用

    【讨论】:

    • 我正在使用核心 2.2.0
    【解决方案4】:

    Microsoft.EntityFrameworkCore.Tools.Dotnet 版本更改为可用版本,然后在 CLI 上运行:dotnet restore。然后再试一次。

    【讨论】:

      【解决方案5】:

      要在 dotnet core 中启用迁移: 1 打开命令提示符并将目录更改为 .csproj 位置 2 运行命令 'dotnet restore' #这将下载并使下一个命令在该位置可用 3 完成后,运行命令 'dotnet ef'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-20
        • 1970-01-01
        • 2014-08-15
        • 2018-07-20
        • 2018-11-18
        • 2022-06-24
        • 2017-01-01
        • 1970-01-01
        相关资源
        最近更新 更多