こんにちは、Japan Developer Support Core チームの上原です。
.NET Framework 4.x (.NET Framework 4 以降のバージョン) に関する互換性について解説させていただきます。
なお、.NET Framework の後継製品として .NET や .NET Core がありますが、ソフトウェアの構成は大きく異なっており、本記事は .NET Framework を対象にしておりますことご注意ください。
はじめに
.NET Framework 4.x は、サポートされている Windows OS において、いずれかのバージョンが規定でインストールされております。
各 OS バージョンごとの .NET Framework バージョンについては、ドキュメント に記載されており、 OS 既定のバージョン未満にダウングレードすることはできません。
また、インプレースアップグレードにより常に最も新しいランタイムのみが有効になりますので、システムで稼働している .NET Framework バージョンは、ドキュメント記載のレジストリ から確認できます。
なお、.NET Framework 4.x の互換性は、実際に稼働する ランタイムバージョン と、アプリケーションの ターゲットバージョン を考える必要があります。
ランタイムバージョン は、システムにおいて稼働しているランタイムのバージョンを指しており、ターゲットバージョン は、アプリケーションをビルドする際に指定されているバージョンです。
このため、ランタイムバージョン と ターゲットバージョン の、それぞれの観点で .NET Framework 4.x の互換性について解説します。
ランタイムバージョンの変更
.NET Framework ランタイムでは、後方互換性が保証 されており、アプリケーションのターゲットバージョンに応じて過去バージョンのランタイムを模倣して動作します。
例えば .NET Framework 4.7 をターゲットに開発されたアプリケーションが、.NET Framework 4.8 ランタイム上で動作する場合には、ランタイムは互換性を維持し、ターゲットバージョンのランタイムと同等に動作します。
そのため、ランタイムバージョンを変更し、より新しいバージョンに移行した際も、既存のアプリケーションは従来通り動作することが想定されています。
一方で、アプリケーションのターゲットバージョンよりも、ランタイムバージョンが古い場合には、アプリケーションは動作しません。
例えば、.NET Framework 4.8 をターゲットとして開発されたアプリケーションは、.NET Framework 4.7.2 などの 4.8 未満のランタイム上では動作しません。
なお、一部の機能については機能や API の振る舞いについては、ランタイムバージョンを変更することで違いが生じる場合があります。
詳細については、バージョンごとに互換性情報が公開されておりますので、必要に応じてこちらもご確認ください。
.NET Framework 4.x ランタイムのアップグレード、ダウングレードについては、過去のブログ記事 でも紹介しております。
ターゲットバージョンに関する互換性
.NET Framework アプリケーション開発では、いずれかのバージョンをターゲットとして指定し、開発する必要があります。
一般的に、新しい .NET Framework バージョンをターゲットとすることで、より多くの機能をご利用いただけますが、実行にはターゲットバージョン以上のランタイムが必要になるため、実行環境の要件も考慮する必要があります。
なお、.NET Framework ターゲットバージョンを変更する場合には、必要に応じてソースコードなどを修正し、再ビルドする必要があります。
ターゲットバージョンを変更する際の互換性情報については、以下にそれぞれのバージョンごとに掲載されています。
サポートの考え方
.NET Framework 4.x のサポート期間についても、ランタイムバージョン(アプリケーションの実行)と、ターゲットバージョン(アプリケーションの開発)、のそれぞれの観点で考える必要があります。
.NET Framework 4.x アプリケーションの実行
アプリケーションを実行するシナリオでは、サポート期間は ランタイムバージョン のサポートライフサイクルに従います。
例えば、.NET Framework 4.5 をターゲットとしたアプリケーションを、.NET Framework 4.8 ランタイム上で利用する場合には、.NET Framework 4.8 ランタイムとしてサポートされ、セキュリティ修正などの更新プログラムも .NET Framework 4.8 として提供されます。
.NET Framework 4.x アプリケーションの開発
アプリケーションを開発するシナリオでは、サポート期間は ターゲットバージョン によって既定されます。
例えば、.NET Framework 4.5 は既にサポートを終了した製品となりますので、.NET Framework 4.5 をターゲットにしたアプリケーションを開発するシナリオはサポートされておらず、サポートされているバージョンへ移行をご検討ください。
各 .NET Framework バージョンのサポートライフサイクルについては、ライフサイクルのドキュメント や ライフサイクルに関する FAQ をご確認ください。
本ブログの内容は弊社の公式見解として保証されるものではなく、開発・運用時の参考情報としてご活用いただくことを目的としています。もし公式な見解が必要な場合は、弊社ドキュメント (https://learn.microsoft.com や https://support.microsoft.com) をご参照いただくか、もしくは私共サポートまでお問い合わせください。