RuntimeInformation.RuntimeIdentifier は、実行時に計算された値ではなく、ランタイムがビルドされたプラットフォームを返します。
以前の動作
値は、OS ファイルまたは API を使用して計算されたランタイム識別子 (RID) でした。 これは一般に、バージョン固有のディストリビューション固有の RID を意味していました。 たとえば、Windows 11 でアプリケーションを実行する場合、値は win10-x64
されたか、Ubuntu 20.04 では ubuntu.20.04-x64
可能性があります。
新しい動作
.NET 8 以降では、値はランタイムがビルドされた RID です。 つまり、ランタイムの移植可能なビルド (Microsoft が提供するすべてのビルド) の場合、値はバージョン固有でディストリビューション固有でありません。 たとえば、Windows 11 の値は win-x64
で、Ubuntu 20.04 では linux-x64
。 移植不可能なビルド (ソース ビルド) の場合、ビルドはバージョンとディストリビューションを持つビルド RID を設定し、その値は返される RID です。
導入されたバージョン
.NET 8 RC 1
破壊的変更の種類
この変更は 動作の変更です。
変更の理由
この変更は、 RID 固有の資産解決 に対する .NET 8 の変更と、ディストリビューション対応ランタイムからの移行に伴います。 RuntimeInformation.RuntimeIdentifier は、ホストまたはランタイムが自身を実行していると見なすプラットフォームを表す不透明な値です。 .NET 8 では、実行時に計算される RID ではなく、ホストまたはランタイムが構築されるプラットフォームに対応します。
推奨されるアクション
RuntimeInformation.RuntimeIdentifier は不透明な値であり、コンポーネント パーツに解析されるものではありません。 アプリケーションが実行されている実際のマシンの OS バージョンについては、 Environment.OSVersionを使用します。 説明については、 RuntimeInformation.OSDescriptionを使用します。 Linux 上の特定の ID (ディストリビューション) と対応するバージョンについては、 os リリース ファイルを読み取ることができます。
影響を受ける API
こちらも参照ください
.NET