转载至:https://docs.microsoft.com/zh-cn/dotnet/articles/core/rid-catalog

What are RIDs?

RID is short for Runtime IDentifier. RIDs are used to identify target operating systems where an application or asset (that is, assembly) will run. They look like this: "ubuntu.14.04-x64", "win7-x64", "osx.10.11-x64". For the packages with native dependencies, it will designate on which platforms the package can be restored.

It is important to note that RIDs are really opaque strings. This means that they have to match exactly for operations using them to work. As an example, let us consider the case of Elementary OS, which is a straightforward clone of Ubuntu 14.04. Although .NET Core and CLI work on top of that version of Ubuntu, if you try to use them on Elementary OS without any modifications, the restore operation for any package will fail. This is because we currently (May 3rd, 2016) don't have a RID that designates Elementary OS as a platform.

RIDs that represent concrete operating systems should be of the form: [os].[version]-[arch]where:

  • [os] is the operating system moniker, for example, win
  • [version] is the operating system version in the form of a dot (.) separated version number, for example, 10.1511, accurate enough to reasonably enable assets to target operating system platform APIs represented by that version.[arch] is the processor architecture, for example, x86x64armarm64, etc.
    • This shouldn't be marketing versions, as they often represent multiple discrete versions of the operating system with varying platform API surface area, for example, win.10-x64

The RID graph is defined in a package called Microsoft.NETCore.Platforms in a file calledruntime.json which you can see on the CoreFX repo. If you use this file, you will notice that some of the RIDs have an "#import" statement in them. These statements are compatibility statements. That means that a RID that has an imported RID in it, can be a target for restoring packages for that RID. Slightly confusing, but let's look at an example. Let's take a look at macOS:

"osx.10.11-x64": {
"#import": [ "osx.10.11", "osx.10.10-x64" ]
}

The above RID specifies that osx.10.11-x64 imports osx.10.10-x64. This means that when restoring packages, NuGet will be able to restore packages that specify that they need osx.10.10-x64 on osx.10.11-x64.

A slightly bigger example RID graph:

  • win.10.1511-x64

    • win.10.1511
    • win.10-x64
      • win.10
      • win.6.3.9200-x64
        • win.6.3-x64
        • win.6.3
        • win.6.3.9200
        • win.6.2.9200-x64
          • win.6.2.9200
          • win.6.1.7600-x64
            • win.6.1.7600
            • win.6.1-x64
              • win.6.1

                • win

                  • any

All RIDs eventually map back to the root any RID.

Although they look easy enough to use, there are some special things about RIDs that you have to keep in mind when working with them:

  • They are opaque strings and should be treated as black boxesYou need to use the RIDs that are already defined for the platform and this document shows that

    • You should not construct RIDs programmatically
  • The RIDs do need to be specific so don't assume anything from the actual RID value; please consult this document to determine which RID(s) you need for a given platform

Using RIDs

In order to use RIDs, you have to know which RIDs there are. This document lists out the currently supported RIDs in .NET Core. Please be aware that this document is getting updated regularly as new RIDs are added to the platform. If you wish to check if new ones are added, please check back here.

We are working towards getting this information into a more interactive form. When that happens, this page will be updated to point to that tool and/or its usage documentation.

Windows RIDs

  • Windows 7

    • win7-x64
    • win7-x86
  • Windows 8
    • win8-x64
    • win8-x86
  • Windows 10
    • win10-x64
    • win10-x86

Linux RIDs

  • Red Hat Enterprise Linux

    • 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
  • CentOS
    • centos.7-x64
    • centos.7.1-x64
  • Debian
    • debian.8-x64
    • debian.8.2-x64
  • Currently supported Ubuntu derivatives
    • linuxmint.17-x64
    • linuxmint.17.1-x64
    • linuxmint.17.2-x64
    • linuxmint.17.3-x64

OS X RIDs

  • osx.10.10-x64
  • osx.10.11-x64

.NET Core Runtime IDentifier (RID) catalog的更多相关文章

  1. .NET Core开发日志——Runtime IDentifier

    .NET Core对于传统.NET开发人员而言是既熟悉又陌生的新平台,所以有时遇上出乎意料的事情也纯属正常情况.这时只需点耐心,多查查资料,努力找到原因,也未尝不是件有意义的体验. 比如当建完一个最简 ...

  2. myeclipse 无法启动 java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).

    把myeclipse10 按照目录完整拷贝到了另外一台电脑, 另外的目录 原安装目录 D\:\soft\i\myeclipse10 新安装目录 E\:\soft\myeclipse10 双击启动失败, ...

  3. Eclipse无法启动错误之Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini)

    悲剧,在安装Android Build Tools时,提醒需要关闭Eclipse进行安装,于是我在Tools安装完成后重启了Eclipse.但是Eclipse却无法启动,在log中有如下提示: Una ...

  4. 【转】RCP中org.eclipse.core.runtime.CoreException

    org.eclipse.core.runtime.CoreException: Plug-in TRAIN was unable to load class train.Application. 利用 ...

  5. Eclipse Groovy插件使用时出现的错误 org.eclipse.core.runtime.InvalidRegistryObjectException: Invalid registry object

    在eclipse marketplace中下载了groovy插件,发现使用的groovy版本跟项目中使用的groovy版本不一致. 于是在Preferences -> Groovy -> ...

  6. windows系统中Dotnet core runtime 安装后,无法启动次程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll的解决方法

    因为dotnet core runtime依赖vc++2015,如果系统未安装vc++2015则会报上面的错误 解决方案:先下载安装vc++2015再安装dotnet core runtime, vc ...

  7. CentOS ASP.NET Core Runtime Jexus跨平台布署

    .net core 开源和跨平台,能布署到当前主流的Windows,Linux,macOS 系统上.本篇我们将在 Linux 系统上使用 ASP.NET Core Runtime 和 Jexus 布署 ...

  8. SWT/JFace开发遇到org.eclipse.core.runtime.IProgressMonitor问题的解决办法(转载)

    今日正在使用SWT和JFace开发一个系统,在搭建JFace平台时遇到了一个问题,运行HelloWorld程序抛出org.eclipse.core.runtime.IProgressMonitor的n ...

  9. .Net Core Runtime安装说明

    在开发阶段,都是直接安装.Net Core的SDK,但是在部署的时候你还是直接装SDK吗?当然直接装SDK也没什么问题,也可以少一些麻烦.但是如果你像我一样不喜欢在产线上装SDK,只想装Runtime ...

随机推荐

  1. tolua++实现分析

    项目正在使用cocos2dx的lua绑定,绑定的方式是tolua++.对大规模使用lua代码信心不是很足,花了一些时间阅读tolua++的代码,希望对绑定实现的了解,有助于项目对lua代码的把控.从阅 ...

  2. C primer plus 练习题 第二章

    6. #include <stdio.h> void echo(); int main() { /* echo(); echo(); echo(); printf("\n&quo ...

  3. 数轴上从左到右有n个点a[0],a[1]…,a[n-1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。要求算法复杂度为o(n)。

    #include <iostream> using namespace std; int maxCover(int* a, int n, int l) { ; ; ; while(end ...

  4. cakePHP的controller回调

    1. afterFilter(), executed after all controller logic, including the rendering of the view2. beforeF ...

  5. Entity Framework Code First ---EF Power Tool MySql

    关于如何使用EF Power Tool的介绍请看 http://www.cnblogs.com/LingzhiSun/archive/2011/05/24/EFPowerTool_1.html, 这里 ...

  6. STL中的算法小结

    ()要运用STL的算法,首先必须包含头文件<algorithm>,某些STL算法用于数值处理,因此被定义于头文件<numeric> ()所有STL算法都被设计用来处理一个或多个 ...

  7. 受限玻尔兹曼机(RBM)学习笔记(一)预备知识

    去年 6 月份写的博文<Yusuke Sugomori 的 C 语言 Deep Learning 程序解读>是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算法原 ...

  8. [git]本地查看,重命名,拉取,删除远程分支

    1.git branch -a 查看所有的分支,包含远程仓库.-av:同时显示最近的一个commit信息. 2.git checkout -b newBranch origin/master 拷贝一份 ...

  9. Redis设计与实现-附加功能

    发布与订阅 redis订阅分为精准的频道订阅与模糊匹配的模式订阅: redis将所有频道的订阅关系都保存在服务器状态pubsub_channels字典里,键是频道名,值是一个记录所有订阅此频道的客户端 ...

  10. [Solution] AOP原理解析及Castle、Autofac、Unity框架使用

    本节目录: AOP介绍 AOP基本原理 AOP框架 Castle Core Castle Windsor Autofac Unity AOP介绍 面向切面编程(Aspect Oriented Prog ...