我相信 OP 中链接的官方文档提供了所有必要的信息。
第一件事
什么是 RID?
RID 是 Runtime IDentifier 的缩写。RID 用于识别应用程序或资产(即程序集)将运行的目标操作系统。
需要注意的是,RID 确实是不透明的字符串。这意味着它们必须与使用它们的操作完全匹配才能工作。
这也是从GitHub引用的
RID 是标识平台的不透明字符串。RID 通过“导入”另一个 RID 与其他 RID 建立关系。这样,RID 就是兼容 RID 的有向图。
最佳 RID 考虑部分 RID 图:
"any": {},
"win": {
"#import": [ "any" ]
},
"win-x86": {
"#import": [ "win" ]
},
"win-x64": {
"#import": [ "win" ]
},
"win7": {
"#import": [ "win" ]
},
"win7-x86": {
"#import": [ "win7", "win-x86" ]
},
"win7-x64": {
"#import": [ "win7", "win-x64" ]
}
这可以可视化为有向图,如下所示:
win7-x64 win7-x86
| \ / |
| win7 |
| | |
win-x64 | win-x86
\ | /
win
|
any
因此,在评估 win7-x64 时,最佳 RID 将是:win7-x64
,
win7
, win-x64
, win
,any
类似地,在评估
win-x64
: win-x64
,时win
,any
请注意,由于导入出现
在文档顺序中的导入win7
之前
,因此出现在之前。win-x64
win7
win-x64
也就是说,并参考runtime.json
CoreFX 回购。
如果您使用此文件,您会注意到某些 RID 中包含“#import”语句。这些陈述是兼容性陈述。这意味着其中具有导入的 RID 的 RID 可以成为恢复该 RID 的包的目标。
仅提取相关部分,
1) 如果我指定 RID,win7-x32
我的代码是否也可以在 64 位 Windows 操作系统上运行?
"base": {
},
"any": {
"#import": [ "base" ]
},
...
"win": {
"#import": [ "any" ]
},
...
"win7": {
"#import": [ "win" ]
},
"win7-x86": {
"#import": [ "win7", "win-x86" ]
},
"win7-x64": {
"#import": [ "win7", "win-x64" ]
},
...
2)如果我指定一个win7的RID,它会构建什么,它会构建32位版本还是64位版本?
它将构建一个可以在两个平台上运行的通用版本。参考上面的可视化。
3) 如果我指定 win7 的 RID,我的程序会在 Windows 8、8.1 或 10 中运行吗?
是的。基于引用版本的导入。
"win8": {
"#import": [ "win7" ]
},
"win8-x86": {
"#import": [ "win8", "win7-x86" ]
},
"win8-x64": {
"#import": [ "win8", "win7-x64" ]
},
"win8-arm": {
"#import": [ "win8" ]
},
"win81": {
"#import": [ "win8" ]
},
"win81-x86": {
"#import": [ "win81", "win8-x86" ]
},
"win81-x64": {
"#import": [ "win81", "win8-x64" ]
},
"win81-arm": {
"#import": [ "win81", "win8-arm" ]
},
"win10": {
"#import": [ "win81" ]
},
"win10-x86": {
"#import": [ "win10", "win81-x86" ]
},
"win10-x64": {
"#import": [ "win10", "win81-x64" ]
},
4) any
RID 做什么?
这意味着该构建与any
支持的平台兼容,并且它可以成为为任何 RID 恢复包的目标。
5) 如果我指定一个 RID,blah
我预计会出错。相反,我的应用程序是在bin/Release/blah directory
. 它只是默认为其他一些运行时吗?
报价单文件:
所有 RID 最终都映射回根any
RID。
最后,再次从文档中,注意
尽管它们看起来很容易使用,但在使用它们时,您必须牢记一些关于 RID 的特殊事项:
- 它们是不透明的字符串,应该被视为黑盒子
- 您需要使用已为平台定义的 RID,本文档显示
- RID 确实需要具体,因此不要从实际的 RID 值中假设任何内容;请查阅本文档以确定给定平台所需的 RID