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

时间:2017-04-12 17:12:10

标签: c# .net-core entity-framework-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>

更新

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

  

C:\ Program Files(x86)\ Jenkins \ workspace \ api.XXX.com \ XXXProject&gt; 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&gt; dotnet ef update database

     

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

更新#2

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

开发盒 enter image description here

生产箱 enter image description here

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

更新3

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

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

5 个答案:

答案 0 :(得分:27)

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

可用版本为listed on NuGet

更新

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

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

答案 1 :(得分:2)

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

dotnet add package Microsoft.EntityFrameworkCore.Design

然后

dotnet restore

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

答案 2 :(得分:0)

在我的案例中有效的方法是使用cli,包括Microsoft.EntityFrameworkCore.Tools.DotNet Version =“ 2.1.0-preview1-final,然后在还原dotnet之后

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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