我需要 Microsoft.NETCore.Platforms 和 Microsoft.NETCore.Runtime 吗?
Do I need Microsoft.NETCore.Platforms and Microsoft.NETCore.Runtime?
在新的 ASP.NET Core RC2 class 库中,我有以下 project.json 文件,我在其中尝试遵循 How to trim your package dependencies 上的文档。
{
"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
本质上只是一个 json 文件,它指定了 runtime identifiers (RIDs)。这些 ID(例如 osx.10.10-x64
或 win7-x86
)在需要部署特定于平台的代码时使用(例如,特殊编译的 CoreCLR 或特定于平台的压缩或加密库)。它形成了一种树,允许更通用的平台模式(例如 linux
后来是父级,例如 rhel
又是特定支持版本 rhel-7.1-x64
的父级)。因此,当有人构建 NuGet 时,您可以添加一个工件,例如部署在所有 linux 机器上的程序集(例如,针对标准 linux api 执行 P/Invoke )或特定 linux 分发(例如使用特殊的 RedHat 功能)。
Microsoft.NETCore.Runtime
是一个更棘手的故事。它用于为您的平台查找正确的运行时。
Should you keep them: 由于你不直接使用它们,显式添加这些依赖项对我的理解没有任何好处。
在新的 ASP.NET Core RC2 class 库中,我有以下 project.json 文件,我在其中尝试遵循 How to trim your package dependencies 上的文档。
{
"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
本质上只是一个 json 文件,它指定了 runtime identifiers (RIDs)。这些 ID(例如osx.10.10-x64
或win7-x86
)在需要部署特定于平台的代码时使用(例如,特殊编译的 CoreCLR 或特定于平台的压缩或加密库)。它形成了一种树,允许更通用的平台模式(例如linux
后来是父级,例如rhel
又是特定支持版本rhel-7.1-x64
的父级)。因此,当有人构建 NuGet 时,您可以添加一个工件,例如部署在所有 linux 机器上的程序集(例如,针对标准 linux api 执行 P/Invoke )或特定 linux 分发(例如使用特殊的 RedHat 功能)。Microsoft.NETCore.Runtime
是一个更棘手的故事。它用于为您的平台查找正确的运行时。
Should you keep them: 由于你不直接使用它们,显式添加这些依赖项对我的理解没有任何好处。