Dot-Net
我需要 Microsoft.NETCore.Platforms 和 Microsoft.NETCore.Runtime 嗎?
在一個新的 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是一個更棘手的故事。它用於為您的平台查找正確的執行時。您是否應該保留它們:由於您不直接使用它們,因此顯式添加這些依賴項不會對我的理解帶來任何好處。