軟件包“Microsoft.EntityFrameworkCore.Tools.DotNet”的版本無法解決

.net-core c# 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> 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從我的開發盒複製到生產服務器,但這似乎也沒有用。我在這裡錯過了什麼?

一般承認的答案

沒有1.0.1版本的Microsoft.EntityFrameworkCore.Tools.DotNet (在撰寫本文時)。您需要設置Version="1.0.0"才能恢復包。

NuGet列出了可用的版本。

更新:

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

然後在項目目錄中調用dotnet restore將軟件包下載到本地緩存,然後該工具可用,並且可以使用dotnet ef


熱門答案

在我的案例(.NET Core 2.0.3)中有助於發布:

dotnet add package Microsoft.EntityFrameworkCore.Design

然後

dotnet restore

這將以正確的版本安裝Microsoft.EntityFrameworkCore.Tools.DotNet



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow