繁体   English   中英

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

[英]Version for package `Microsoft.EntityFrameworkCore.Tools.DotNet` could not be resolved

我正在向我的服务器部署一个新的 .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 安装 Microsoft.EntityFrameworkCore.Tools.DotNet

然后我收到以下信息:

警告:安装失败。 回滚... 执行 nuget 操作需要 13.44 秒 Package 'Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.0' has a package type 'D otnetCliTool' 项目不支持'C:\\Program Files (x86)\\Jenkins\\工作空间\\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

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

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

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

NuGet列出了可用版本。

更新:

要使用 CLI 工具,您首先需要添加<DotNetCliToolReference>项。

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

在我的情况下(.NET Core 2.0.3)有帮助的是发出:

dotnet add package Microsoft.EntityFrameworkCore.Design

进而

dotnet restore

这安装了正确版本的Microsoft.EntityFrameworkCore.Tools.DotNet

在我的情况下,使用包括 Microsoft.EntityFrameworkCore.Tools.DotNet Version="2.1.0-preview1-final 在内的 cli,然后在 dotnet restore 之后

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM