我正在向服务器部署新的.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版本与服务器上的版本不同
开发箱
生产箱
我假设问题是1.0.1中没有Microsoft.EntityFrameworkCore.Tools.DotNet?旧版本会不会很奇怪?
更新3
好吧,我去Microsoft Site尝试下载SDK的1.0.0版本(因为它似乎没有安装在我的服务器上)。不幸的是,MS网站似乎强制向我提供1.0.1版本(其中不包含我需要的EF内容?)。
我尝试将1.0.0目录从我的开发箱复制到生产服务器,但这似乎也不起作用。我在这里想念什么?
最佳答案
(在撰写本文时)没有1.0.1
的Microsoft.EntityFrameworkCore.Tools.DotNet
版本。您需要设置Version="1.0.0"
来还原软件包。
可用的版本是listed on NuGet。
更新:
要使用CLI工具,首先需要添加<DotNetCliToolReference>
项目。
然后,您在项目目录中调用dotnet restore
将软件包下载到本地缓存中,然后该工具将可用并且可以使用dotnet ef
。