【问题标题】:Do I need Microsoft.NETCore.Platforms and Microsoft.NETCore.Runtime?我需要 Microsoft.NETCore.Platforms 和 Microsoft.NETCore.Runtime 吗?
【发布时间】:2016-09-25 11:36:00
【问题描述】:

在一个新的 ASP.NET Core RC2 类库中,我有以下 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.PlatformsMicrosoft.NETCore.Runtime 时,一切仍然有效。这可能是因为 Microsoft 依赖项也指定了这些。这些依赖项有什么用,我应该明确并保留它们吗?

【问题讨论】:

    标签: .net asp.net-core asp.net-core-mvc .net-core project.json


    【解决方案1】:

    这些包有什么用途:

    • Microsoft.NETCore.Platforms 本质上只是一个指定runtime identifiers (RID) 的 json 文件。当需要部署特定于平台的代码(例如,特殊编译的 CoreCLR 或特定于平台的压缩或加密库)时,会使用这些 ID(例如 osx.10.10-x64win7-x86)。它形成了一种允许更通用平台模式的树(例如linux,它后来是例如rhel 的父级,它又是特定支持版本rhel-7.1-x64 的父级)。因此,当有人构建 NuGet 时,您可以添加一个工件,例如部署在所有 linux 机器上的程序集(例如,针对标准 linux api 执行 P/Invoke)或特定的 linux 发行版(例如使用特殊的 RedHat 功能)。

    • Microsoft.NETCore.Runtime 是一个更棘手的故事。它用于为您的平台查找正确的运行时。

    您是否应该保留它们:由于您不直接使用它们,因此显式添加这些依赖项对我的理解没有任何好处。

    【讨论】:

      猜你喜欢
      • 2010-10-26
      • 2016-01-04
      • 2014-09-15
      • 1970-01-01
      • 2017-12-16
      • 2015-02-15
      • 2022-10-13
      • 2019-07-28
      • 2011-06-17
      相关资源
      最近更新 更多