2017-04-12 46 views
6

我正在將一個新的.NET Core應用程序部署到我的服務器。我試圖運行EntityFramework遷移,因爲項目是使用「代碼優先」方法創建的。'Microsoft.EntityFrameworkCore.Tools.DotNet`包的版本無法解決

的命令來運行是

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:\程序文件(x86)\詹金斯\ workspace \ api.XXX.com \ XXXProject> nuget i nstall Microsoft.EntityFrameworkCore.Tools.DotNet

然後我收到以下內容:

警告:安裝失敗。回滾... 執行nuget操作耗時13.44秒 程序包'Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.0'的程序包類型'D otnetCliTool'不受項目'C:\ Program Files(x86) \詹金斯\ W orkspace \ api.XXX.com \ XXXProject'.`

然後,如果我運行DOTNET EF命令,我得到這個:

C:\ Program Files文件(86) \ Jenkins \ workspace \ api.desully.com \ deSullyAPI_Core> dotnet ef update database

Microsoft.EntityFrameworkCore.Tools.DotNet的版本無法解決。

更新#2

,我發現我的dev的機器中有不同的SDK版本比服務器

開發框 enter image description here

生產彩盒 enter image description here

上的版本

我假設問題是1.0.1沒有Microsoft.EntityFramework Core.Tools.DotNet在裏面嗎?老版本不是很奇怪嗎?

更新3

所以僅供參考 - 我去Microsoft Site嘗試下載1.0.0版本的SDK(因爲它似乎沒有被我的服務器上安裝)。不幸的是,MS站點似乎強制給我1.0.1版本(它不包含我需要的EF東西?)。

我試着將我的開發箱中的1.0.0目錄複製到生產服務器,但是這也似乎沒有工作。我在這裏錯過了什麼?

回答

19

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

可用版本是listed on NuGet

更新:

要使用CLI工具,你首先需要添加<DotNetCliToolReference>項目,如你已經擁有。

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

+0

我只是在嘗試不同的數字 - 但同樣的問題爲1.0.0。 – footose

+0

然後請提供一些更多的細節:執行什麼工具/命令?什麼是確切的錯誤信息?等 –

+0

更新的線程。對不起,這裏稍微有點新。 – footose

相關問題