Dot-Net

我需要 Microsoft.NETCore.Platforms 和 Microsoft.NETCore.Runtime 嗎?

  • December 14, 2016

在一個新的 ASP.NET Core RC2 類庫中,我有以下 project.json 文件,我嘗試在其中遵循有關如何修剪包依賴項的文件。

{
 "dependencies": {
   "Microsoft.AspNetCore.Mvc.Abstractions": "1.0.0-rc2-final",
   "Microsoft.AspNetCore.Mvc.Core": "1.0.0-rc2-final",
   "Microsoft.Extensions.Caching.Abstractions": "1.0.0-rc2-final",
   "Newtonsoft.Json": "8.0.3"
 },

 "frameworks": {
   "netstandard1.5": {
     "dependencies": {
       "Microsoft.NETCore.Platforms": "1.0.1-rc2-24027",
       "Microsoft.NETCore.Runtime": "1.0.2-rc2-24027",
       "System.Xml.XDocument": "4.0.11-rc2-24027"
     },
     "imports": "dnxcore50"
   },
   "net461": {
     "frameworkAssemblies": {
       "System.ServiceModel": "",
       "System.Xml": "",
       "System.Xml.Linq": ""
     }
   }
 }
}

當我嘗試刪除Microsoft.NETCore.PlatformsandMicrosoft.NETCore.Runtime時,一切仍然有效。這可能是因為 Microsoft 依賴項也指定了這些。這些依賴關係是什麼,我應該明確並保留它們嗎?

包裹有什麼用途:

  • Microsoft.NETCore.Platforms本質上只是一個指定執行時標識符(RID) 的 json 文件。當需要部署特定於平台的程式碼(例如,特殊編譯的 CoreCLR 或特定於平台的壓縮或加密庫)時,會使用這些 ID(例如osx.10.10-x64或)。win7-x86它形成了一種樹,允許更通用的平台模式(例如linux,它後來是父級,例如rhel,它又是特定支持版本的父級rhel-7.1-x64)。因此,當有人建構 NuGet 時,您可以添加一個工件,例如部署在所有 linux 機器上的程序集(例如,針對標準 linux api 執行 P/Invoke)或特定的 linux 發行版(例如,使用特殊的 RedHat 功能)。
  • Microsoft.NETCore.Runtime是一個更棘手的故事。它用於為您的平台查找正確的執行時。

您是否應該保留它們:由於您不直接使用它們,因此顯式添加這些依賴項不會對我的理解帶來任何好處。

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