本文摘自微软官方文档,点击这里查看原文。
本文摘录日期:2017-02-08
引言:每次新建.Net Core项目后,在进行跨平台发布时总是要找对应的发布平台runtimes。在这里做下收藏。
RID 是什么?
RID 是运行时标识符的缩写。 RID 用于标识其中将运行应用程序或资产(即程序集)的目标操作系统。 其外观类似如下:“ubuntu.14.04-x64”、“win7-x64”、“osx.10.11-x64”。 对于具有本机依赖项的包,它将指定在其中可以还原包的平台。
请务必注意 RID 实际上是不透明字符串。 这意味着它们需要与使用它们的操作完全匹配。 例如,让我们设想这样的情况,Elementary OS 是 Ubuntu 14.04 的简单克隆。 虽然 .NET Core 和 CLI 基于该版本的 Ubuntu 工作,但如果尝试不进行任何修改就在 Elementary OS 上使用它们,则任何包的还原操作都将失败。 这是因为当前不具有将 Elementary OS 指定为一种平台的 RID。
表示具体操作系统的 RID 通常遵循以下模式:[os].[version]-[arch]
,其中:
-
[os]
是系统名字对象,例如ubuntu
。 -
[version]
是用圆点 (.
) 分隔的版本号形式表示的操作系统版本(例如15.10
),准确性足以合理启用资产来使用该版本代表的操作系统平台 API。- 这不应为营销版本,因为它们通常代表该操作系统的多个离散版本,且具有不同的平台 API 外围应用。
-
[arch]
是处理器体系结构,例如x86
、x64
、arm
、arm64
等。
RID 图形是在名为 runtime.json
的文件中名为 Microsoft.NETCore.Platforms
的包中定义的,请参见 CoreFX repo。 如果使用此文件,你将注意到,某些 RID 中具有 "#import"
语句。 这些语句是兼容性语句。 这意味着其中已导入 RID 的 RID 可以作为该 RID 还原包的目标。 看上去有点混乱,让我们看一个示例。 我们来看一看 macOS:
"osx.10.11-x64": {
"#import": [ "osx.10.11", "osx.10.10-x64" ]
}
上述 RID 指定 osx.10.11-x64
导入 osx.10.10-x64
。 这意味着,当还原包时,NuGet 将能够还原指定在 osx.10.11-x64
上需要 osx.10.10-x64
的所有包。
一个稍微大点的示例 RID 关系图:
-
win10-arm
win10
-
win81-arm
win81
-
win8-arm
-
win8
-
win7
-
win
any
-
-
-
所有 RID 最终都会映射回根 any
RID。
虽然看起来使用相当容易,但仍有几件关于 RID 的特殊事项,在你使用它们的时候需要牢记:
- 它们是不透明字符串并且应将其视为黑框
- 不应以编程方式构造 RID
- 需要使用已针对平台定义的 RID,并且此文档表明
- RID 需要具体化,因此不用假定来自实际 RID 值的任何内容;请参阅此文档以确定给定平台需要哪个 RID
使用 RID
若要使用 RID,必须知道有哪些 RID。 新的 RID 将定期添加到该平台。 有关最新版本,请查看 CoreFX 存储库上的 runtime.json 文件。
[!NOTE]
我们正致力于以更具交互性的形式提供此信息。 届时,此页面将更新为指向该工具和/或其使用情况文档。
Windows RID
- Windows 7 / Windows Server 2008 R2
win7-x64
win7-x86
- Windows 8 / Windows Server 2012
win8-x64
win8-x86
win8-arm
- Windows 8.1 / Windows Server 2012 R2
win81-x64
win81-x86
win81-arm
- Windows 10 / Windows Server 2016
win10-x64
win10-x86
win10-arm
win10-arm64
Linux RID
- Red Hat Enterprise Linux
rhel.7-x64
rhel.7.0-x64
rhel.7.1-x64
rhel.7.2-x64
- Ubuntu
ubuntu.14.04-x64
ubuntu.14.10-x64
ubuntu.15.04-x64
ubuntu.15.10-x64
ubuntu.16.04-x64
ubuntu.16.10-x64
- CentOS
centos.7-x64
- Debian
debian.8-x64
- Fedora
fedora.23-x64
fedora.24-x64
- OpenSUSE
opensuse.13.2-x64
opensuse.42.1-x64
- Oracle Linux
ol.7-x64
ol.7.0-x64
ol.7.1-x64
ol.7.2-x64
- 当前支持的 Ubuntu 派生类
linuxmint.17-x64
linuxmint.17.1-x64
linuxmint.17.2-x64
linuxmint.17.3-x64
linuxmint.18-x64
OS X RID
osx.10.10-x64
osx.10.11-x64
osx.10.12-x64
网友评论