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

要运行的命令是



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



我的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:



然后,我收到以下信息:



然后,如果我运行dotnet ef命令,则会得到以下信息:



更新#2

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

开发箱
c# - 软件包 `Microsoft.EntityFrameworkCore.Tools.DotNet`的版本无法解析-LMLPHP

生产箱
c# - 软件包 `Microsoft.EntityFrameworkCore.Tools.DotNet`的版本无法解析-LMLPHP

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

更新3

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

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

最佳答案

(在撰写本文时)没有1.0.1Microsoft.EntityFrameworkCore.Tools.DotNet版本。您需要设置Version="1.0.0"来还原软件包。

可用的版本是listed on NuGet

更新:

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

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

08-26 16:04
查看更多