Asp.net-Core

ASP.Net 5 類庫包中的 EntityFramework 命令?

  • October 9, 2017

我正在嘗試開發我的第一個 ASP.Net Web 應用程序,在我的解決方案中我有兩個項目。一個Web ApplicationClass Library (Package)。當我建構此應用程序的 ASP.Net 4.5 版本時,我將我的Entity Framework 6實體放入類庫中,所以我在ASP.Net 5版本中這樣做。問題是當我安裝EntityFramework.Commands到類庫時出現錯誤:

Project DBEntities 中的依賴 EntityFramework.Command 7.0.0-rc1-final 不支持框架 .NetPlatform,版本 = 5.4

我對這個 SO question的理解dotnet5.4是,新的 .Net 5 應該由 EF7 支持。

這是我的project.json文件:

{
 "version": "1.0.0-*",
 "description": "FFInfo.DAL Class Library",
 "authors": [ "Mathew" ],
 "tags": [ "" ],
 "projectUrl": "",
 "licenseUrl": "",
   "frameworks": {
       "dotnet5.4": {
           "dependencies": {
               "Microsoft.CSharp": "4.0.1-beta-23516",
               "System.Collections": "4.0.11-beta-23516",
               "System.Linq": "4.0.1-beta-23516",
               "System.Runtime": "4.0.21-beta-23516",
               "System.Threading": "4.0.11-beta-23516"
           }
       }
   },
   "dependencies": {
       "EntityFramework.Commands": "7.0.0-rc1-final",
       "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"
   }
}

我是否安裝了錯誤的包,EF7 是否發生了很大變化以至於我建構錯誤的類,或者我的 json 文件中缺少某些內容?

編輯:基於建議的新 project.json 文件

{
   "version": "1.0.0-*",
   "description": "FFInfo.DAL Class Library",
   "authors": [ "Mathew" ],
   "tags": [ "" ],
   "projectUrl": "",
   "licenseUrl": "",
   "frameworks": {
       "dotnet5.4": {
           "dependencies": {
               "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-*",
               "Microsoft.Dnx.Runtime": "1.0.0-*",
               "Microsoft.Extensions.CommandLineUtils.Sources": {
                   "version": "1.0.0-*",
                   "type": "build"
               },
               "Microsoft.Extensions.PlatformAbstractions": "1.0.0-*",
               "System.Console": "4.0.0-*",
               "System.IO.FileSystem": "4.0.1-*"
           }
       },
       "netcore50": {
           "bin": {
               "assembly": "lib\\netcore50\\_._"
           }
       },
       "dependencies": {
           "EntityFramework.Commands": "7.0.0-rc1-final",
           "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"
       }
   }
}

我想你的問題的原因是純技術性質的。該公告聲明將 dnx451 重命名為 net451,將 dnxcore50 重命名為 dotnet5.4,但建議僅將此類重命名用於類庫(例如,您在 NuGet 上公開以與其他人共享)。如果我理解正確,您開發的應用程序使用類庫,因此您應該使用dnxcore50而不是dotnet5.4. 因此**,您只需將字元串“dotnet5.4”重命名為字元串"dnxcore50" in the fileproject.json` 即可解決問題**。

獨立於上述建議,我想補充一下我對您的問題的理解,為什麼您會收到有關 EntityFramework.Command 7.0.0-rc1-final 的錯誤。

我將框架的重命名理解為朝著微軟計劃的未來變化邁出的一步。另一方面,框架的所有名稱都將被解釋為不同的名稱。我建議您從https://www.nuget的相應資訊中比較頁面https://www.nuget.org/packages/EntityFramework.Commands/7.0.0-rc1-final上顯示的依賴項資訊。 org/packages/EntityFramework.MicrosoftSqlServer/7.0.0-rc1-final。的依賴關係EntityFramework.MicrosoftSqlServer(在使用上沒有問題dotnet5.4)看起來像圖片

在此處輸入圖像描述

我標記閱讀負責的部分dotnet5.4。另一方面,依賴關係EntityFramework.Commands如下圖所示:

在此處輸入圖像描述

其中沒有對應於新名稱的“.NETPlatform 5.4”部分dotnet5.4

我想這是以下****部分錯誤project.json``EntityFramework.Commands

"netcore50": {
 "bin": {
   "assembly": "lib\\netcore50\\_._"
 }
}

我想必須更改netcore50為正確dotnet5.4支持新的框架名稱dotnet5.4。可以將 的內容替換為"netcore50"副本dnxcore50(請參閱):

"dotnet5.4": {
 "dependencies": {
   "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-*",
   "Microsoft.Dnx.Runtime": "1.0.0-*",
   "Microsoft.Extensions.CommandLineUtils.Sources": {
     "version": "1.0.0-*",
     "type": "build"
   },
   "Microsoft.Extensions.PlatformAbstractions": "1.0.0-*",
   "System.Console": "4.0.0-*",
   "System.IO.FileSystem": "4.0.1-*"
 }
}

可能有人應該增加上面引用的 dll 的一些版本號,但在新的固定版本發布之前,您仍然無法使用EntityFramework.Commandsunder 。"dotnet5.4"

**更新:**我向 EntityFramework 開發團隊提出了這個問題。收到後我會附上微軟對這個問題的回复。

引用自:https://stackoverflow.com/questions/34370874