.NET Core 2.0运行时ID(RID)选择依据及多版本发布咨询
关于.NET Core 2.0中选择运行时ID(RID)及多版本发布的问题解答
我之前从.NET Framework转.NET Core的时候也纠结过这个点,结合实际踩坑经验给你理清楚:
选择运行时ID(RID)需要考虑的因素
- 目标客户端的操作系统及具体版本:RID是和OS绑定的,比如Windows环境下
win7-x64对应Windows 7 64位,win10-x64对应Windows 10 64位;Linux环境下ubuntu.18.04-x64对应Ubuntu 18.04 64位,得精准匹配用户的系统版本,不然可能出现运行报错的情况。 - CPU架构类型:要对应客户端的CPU位数,比如32位系统只能用
x86结尾的RID,64位系统用x64,ARM架构的设备(比如树莓派、部分嵌入式设备)则需要arm或arm64开头的RID,选错架构的话程序根本启动不了。 - .NET Core 2.0的版本兼容性:不同.NET Core版本支持的RID范围有差异,.NET Core 2.0毕竟是比较早的版本,一些较新的OS对应的RID可能不在它的支持列表里,得确认你选的RID是2.0官方支持的。
- 用户群体的部署场景:如果是企业内部用户,系统版本和架构都比较统一,选对应的单个RID就行;如果是面向大众用户,就得覆盖主流的OS和架构对应的RID。
是否需要发布多个.exe版本适配不同客户端?
这得看你的用户情况和部署策略:
- 如果你的用户覆盖多种操作系统(Windows、Linux、macOS)或者不同CPU架构,那必须发布对应RID的独立部署包——这种包包含了.NET Core运行时,用户不需要提前安装框架就能直接运行.exe(Linux/macOS下是可执行文件),但每个RID对应一个独立的发布包。
- 如果你的用户愿意自行安装.NET Core 2.0运行时,那可以选择框架依赖部署,这种方式不需要指定RID,发布出来的包体积小,但用户必须先安装对应版本的.NET Core运行时才能运行程序。
- 另外要注意,.NET Core 2.0的独立部署是和RID强绑定的,不同的OS/架构无法共用同一个发布包,所以面向多平台用户的话,就得准备多个版本的发布包。
内容的提问来源于stack exchange,提问作者Kirsten
相关产品推荐
相关产品推荐

