在一个新的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.Platforms
和时Microsoft.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
是一个棘手的故事。它用于为您的平台查找正确的运行时。
您应该保留它们:由于您没有直接使用它们,因此显式添加这些依赖项不会给我的理解带来任何好处。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句