.NET RID 目錄
RID 是運行 時間識別碼的簡短專案。 RID 值是用來識別應用程式執行所在的目標平台。
.NET 套件會使用它們來代表 NuGet 套件中的平台特定資產。 下列值是 RID 的範例:linux-x64、ubuntu.14.04-x64、win7-x64 或 osx.10.12-x64。
針對具有原生相依性的套件,RID 也可指定能在哪些平台上還原套件。
單一 RID 可在您專案檔的 <RuntimeIdentifier> 元素中設定。 可以在專案檔的 <RuntimeIdentifiers> 元素中,將多個 RID 定義為以分號分隔的清單。 它們也會透過 --runtime 選項搭配下列 .NET CLI 命令使用:
代表具體作業系統的 RID 通常遵循 [os].[version]-[architecture]-[additional qualifiers] 這個模式,其中:
[os]是作業/平台系統 Moniker。 例如:ubuntu。[version]是作業系統版本,使用以點分隔 (.) 的版本號碼表示。 例如:15.10。版本 不應該 是行銷版本,因為行銷版本通常代表具有不同平臺 API 介面區之作業系統的多個離散版本。
[architecture]處理器架構。 例如:x86、x64、arm或arm64。[additional qualifiers]進一步區分不同平台。 例如:aot。
RID 圖表
RID 圖表或執行階段後援圖形是與彼此相容的 RID 清單。 RID 是在 Microsoft.NETCore.Platforms 套件中定義。 您可以在 runtime.json 檔案中看到支援的 RID 清單和 RID 圖形,該檔案位於存放 dotnet/runtime 庫中。 在此檔案中,您可以看到所有 RID (基底項目除外) 都包含 "#import" 陳述式。 這些陳述式指出相容的 RID。
當 NuGet 還原套件時,它會嘗試尋找與所指定執行階段完全相符的項目。 若找不到完全相符的項目,NuGet 會返回到圖形,直到它根據 RID 圖形找到最接近的相容系統。
下列範例是 osx.10.12-x64 RID 的實際項目:
"osx.10.12-x64": {
"#import": [ "osx.10.12", "osx.10.11-x64" ]
}
上述 RID 指定 osx.10.12-x64 匯入 osx.10.11-x64。 因此,當 NuGet 還原套件時,它會嘗試在套件中尋找完全相符 osx.10.12-x64 的專案。 如果 NuGet 找不到特定的執行時間,它可以還原指定 osx.10.11-x64 執行時間的套件,例如。
下列範例顯示 runtime.json 檔案中也會定義的稍微較大的 RID 圖形:
win7-x64 win7-x86
| \ / |
| win7 |
| | |
win-x64 | win-x86
\ | /
win
|
any
所有的 RID 最終將對應至根 any RID。
處理 RID 時,您必須謹記一些考量:
請勿嘗試剖析 RID 以擷取元件元件。
使用已針對平台定義的 RID。
RID 必須是特定的,因此不要假設實際 RID 值會怎樣。
除非絕對必要,否則請勿以程式設計方式建置 RID。
某些應用程式需要以程式設計方式計算 RID。 如果是,計算的 RID 必須完全符合目錄,包括大小寫。 具有不同大小寫的 RID 會在 OS 區分大小寫時造成問題,例如 Linux,因為當建構輸出路徑之類的專案時,通常會使用此值。 例如,請考慮 Visual Studio 中的自訂發佈精靈,依賴方案組態管理員和專案屬性的資訊。 例如,如果解決方案組態傳遞不正確值,
ARM64而不是arm64,可能會導致不正確 RID,例如win-ARM64。
使用 RID
若要使用 RID,必須先了解有哪些 RID 存在。 新的值會定期新增至平台。
如需最新的完整版本,請參閱存放庫中的 dotnet/runtimeruntime.json檔案。
未系結至特定版本或 OS 散發套件的 RID 是慣用的選擇,特別是處理多個 Linux 散發版本時,因為大部分的發行版本 RID 都會對應至非散發特定 RID。
下列清單顯示用於每個 OS 的一小部分最常見 RID。
Windows RID
僅列出常見值。 如需最新的完整版本,請參閱存放庫中的 dotnet/runtimeruntime.json檔案。
- Windows,非版本特定
win-x64win-x86win-armwin-arm64
- Windows 7/Windows Server 2008 R2
win7-x64win7-x86
- Windows 8.1/Windows Server 2012 R2
win81-x64win81-x86win81-arm
- Windows 11 / Windows Server 2022 / Windows 10 / Windows Server 2016
win10-x64win10-x86win10-armwin10-arm64
沒有 win11 RID;請使用 win10 RID 進行Windows 11。 如需詳細資訊,請參閱 .NET 相依性和需求。
Linux RID
僅列出常見值。 如需最新的完整版本,請參閱存放庫中的 dotnet/runtimeruntime.json檔案。 執行下列散發套件的裝置可能會與其中一個非散發特定 RID 搭配使用。 例如,如果 Raspberry Pi 裝置執行未列出的 Linux 發行版本,則可以 linux-arm 為目標。
- Linux,而非散發特定
linux-x64(CentOS、Debian、Fedora、Ubuntu 和衍生) 等大部分桌面散發套件linux-musl-x64(使用 musl 的輕量發行版本,如 Alpine Linux)linux-arm(在 Arm 上執行的 Linux 發行版本,例如 Raspberry Pi 模型 2+)linux-arm64(在 64 位 Arm 上執行的 Linux 發行版本,例如 Raspberry Pi 模型 3+ 上的 Ubuntu Server 64 位)
- Red Hat Enterprise Linux
rhel-x64(RHEL 6 版以上已由linux-x64取代)rhel.6-x64
- Tizen
tizentizen.4.0.0tizen.5.0.0
如需詳細資訊,請參閱 .NET 相依性和需求。
macOS RID
macOS RID 使用較舊的 "OSX" 商標。 僅列出常見值。 如需最新的完整版本,請參閱存放庫中的 dotnet/runtimeruntime.json檔案。
- macOS,非版本特定
osx-x64(最低 OS 版本為 macOS 10.12 Sierra)
- macOS 10.10 Yosemite
osx.10.10-x64
- macOS 10.11 El Capitan
osx.10.11-x64
- macOS 10.12 Sierra
osx.10.12-x64
- macOS 10.13 High Sierra
osx.10.13-x64
- macOS 10.14 Mojave
osx.10.14-x64
- macOS 10.15 Catalina
osx.10.15-x64
- macOS 11.0 Big Sur
osx.11.0-x64osx.11.0-arm64
- macOS 12 Monterey
osx.12-x64osx.12-arm64
如需詳細資訊,請參閱 .NET 相依性和需求。
iOS RID
僅列出常見值。 如需最新的完整版本,請參閱存放庫中的 dotnet/runtimeruntime.json檔案。
- iOS,非版本特定
ios-arm64
- iOS 10
ios.10-arm64
- iOS 11
ios.11-arm64
- iOS 12
ios.12-arm64
- iOS 13
ios.13-arm64
- iOS 14
ios.14-arm64
- iOS 15
ios.15-arm64
Android RID
僅列出常見值。 如需最新的完整版本,請參閱存放庫中的 dotnet/runtimeruntime.json檔案。
- Android,而非版本特定
android-arm64
- Android 21
android.21-arm64
- Android 22
android.22-arm64
- Android 23
android.23-arm64
- Android 24
android.24-arm64
- Android 25
android.25-arm64
- Android 26
android.26-arm64
- Android 27
android.27-arm64
- Android 28
android.28-arm64
- Android 29
android.29-arm64
- Android 30
android.30-arm64
- Android 31
android.31-arm64
- Android 32
android.32-arm64