我正在将新的.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版本,而不是服务器上的版本
我假设问题是1.0.1中没有Microsoft.EntityFrameworkCore.Tools.DotNet吗?旧版本不是很奇怪吗?
更新3
所以fyi - 我去了Microsoft Site尝试下载SDK的1.0.0版本(因为它似乎没有安装在我的服务器上)。不幸的是,MS网站似乎强迫我提供1.0.1版本(它不包含我需要的EF内容?)。
我尝试将1.0.0 dir从我的开发盒复制到生产服务器,但这似乎也没有用。我在这里缺少什么?
答案 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”