软件包"Microsoft.EntityFrameworkCore.Tools.DotNet"的版本无法解决

foo*_*ose 15 c# entity-framework-core .net-core

我正在将新的.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>
Run Code Online (Sandbox Code Playgroud)

更新

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

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

然后我收到以下内容:

警告:安装失败.回滚...执行nuget动作耗时13.44秒打包'Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.0'有一个包类型'D otnetCliTool',项目'C:\ Program Files(x86)\ Jenkins \不支持w orkspace\api.XXX.com\XXXProject'

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

C:\ Program Files(x86)\ Jenkins\workspace\api.desully.com\deSullyAPI_Core> dotnet ef update database

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

更新#2

我注意到我的开发机器中有不同的SDK版本,而不是服务器上的版本

开发盒 在此输入图像描述

生产箱 在此输入图像描述

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

更新3

所以fyi - 我去了微软网站尝试下载1.0.0版本的SDK(因为它似乎没有安装在我的服务器上).不幸的是,MS网站似乎强迫我提供1.0.1版本(它不包含我需要的EF内容?).

我尝试将1.0.0 dir从我的开发盒复制到生产服务器,但这似乎也没有用.我在这里错过了什么?

Mar*_*ich 30

没有一个1.0.1版本Microsoft.EntityFrameworkCore.Tools.DotNet(在写作的时候).您需要设置Version="1.0.0"以恢复包.

NuGet列出了可用的版本.

更新:

要使用CLI工具,首先需要添加<DotNetCliToolReference>已有的项目.

然后,您调用dotnet restore项目目录将软件包下载到本地缓存,然后该工具可以使用并dotnet ef可以使用.

  • 我首先在错误的文件夹中运行了一个dotnet命令,所以当我在正确的文件夹中运行它时,我收到了这个错误."dotnet restore"修复了它,谢谢. (2认同)

Mat*_*Bos 5

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

dotnet add package Microsoft.EntityFrameworkCore.Design

然后

dotnet restore

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