👨‍💻

.NET Framework と .NET

2024/12/26に公開

はじめに

仕事として、ソフト開発に従事していた頃は、Microsoftサポート範囲の Windows(Home and Pro)と Windows Server を対象として、複数のライブラリと複数のデスクトップアプリで構成されるパッケージを主に担当していました。
このような構成のソフトであったこともあり、C# フレームワークは、最新の .NET ではなく、プレインストールされている .NET Framework を使い続けてきました。

このように .NET Framework を使い続けてきて、.NET はイマイチ知識不足なこともあり、自分自身として整理する目的で、.NET Framework と .NET について記載することにしました。

.NET Framework

https://dotnet.microsoft.com/ja-jp/learn/dotnet/what-is-dotnet-framework

.NET Framework の変遷として、1.01.12.x~3.x4.x はそれぞれ独立していたということなどは、現時点では不要な知識なので、今現在、.NET Framerowk を利用する上での情報をまとめることにしました。

ブレインストール

Windows(Home and Pro)、Windows Server に対する .NET Framework ランタイムのプレインストール状況を表記します。
※表は OS Build 降順としています。

OS Version OS Build OSサポート期限 .NET Framework
Windows Server 2025 24H2 26100 2034-10-10 4.8
Windows 11 24H2 26100 2026-10-13 4.8
Windows 11 23H2 22631 2025-11-11 4.8
Windows 11 22H2 22621 2024-10-08 4.8
Windows 11 21H2 22000 2023-10-10 4.8
Windows Server 2022 21H2 20348 2031-10-14 4.8
Windows 10 22H2 19045 2025-10-14 4.8
Windows 10 21H2 19044 2023-06-13 4.8
Windows Server 2019 1809 17763 2029-01-09 4.7.2
Windows Server 2016 1607 14393 2027-01-12 4.6.2

Microsoftサポート範囲の OS を対象とすることを前提として考えます。

Windows 10, Windows 11 は、Windows as a Service ということで、次バージョンへの無償アップデートが前提なので、基本的には、最新バージョンを対象と考えれば良いです。
Windows Server は、次バージョンへの無償アップデートはなく、サーバーという性質上、セキュリティパッチのみ実施して、機能強化アップデートは実施しないケースもあるので、現時点では、Windows Server 2016 - .NET Framework 4.6.2 を考慮する必要があります。

Windows のみを対象とする場合、.NET Framework 4.0~4.8 を利用するモジュールとしてビルドが望ましいです。
Windows Server も対象とする場合、.NET Framework 4.0~4.6.2 を利用するモジュールとしてビルドが望ましいです。

ライフサイクル

https://learn.microsoft.com/ja-jp/lifecycle/products/microsoft-net-framework

.NET Framework の基本的なライフサイクルポリシーは、ブレインストールされている OS のサポート期限までサポートが保証されます。

バージョン リリース日 サポート期限
.NET Framework 4.8.1 2022-08-09
.NET Framework 4.8 2019-04-18
.NET Framework 4.7.2 2018-04-30
.NET Framework 4.7.1 2017-10-17
.NET Framework 4.7 2017-04-11
.NET Framework 4.6.2 2016-08-02 2027-01-12

OS毎の利用可否

https://learn.microsoft.com/ja-jp/dotnet/framework/get-started/system-requirements

OS 4.6.2 4.7 4.7.1 4.7.2 4.8 4.8.1
Windows Server 2025
Windows 11
Windows Server 2022
Windows 10
Windows Server 2019
Windows Server 2016

Global Assembly Cache(GAC)

https://learn.microsoft.com/ja-jp/dotnet/framework/app-domains/gac

マネージモジュール配置として、side-by-side ではなく .NET Framework システムフォルダに配置して、各アプリで参照する形態です。

マネージの Dll 参照順位は「GAC」「side-by-side」の順となり、GAC が優先参照されるので、複数パッケージで共有されている Dll を GAC 登録してしまうと、パッケージの保守/アップデートで問題が起こる可能性があります。

.NET

https://dotnet.microsoft.com/ja-jp/learn/dotnet/what-is-dotnet

.NET は、.NET Core、.NET Framework、Xamarin を統合したクロスプラットフォームのフレームワークで、無料のオープンソースとして公開されています。

プレインストール

現時点では、Windows OS に対して、.NET ランタイムはプレインストールされていません。

ライフサイクル

https://learn.microsoft.com/ja-jp/lifecycle/products/microsoft-net-and-net-core

バージョン リリース日 サポート期限
.NET 9 2024-12-03
.NET 8(LTS) 2023-11-14 2026-11-10
.NET 7 2022-11-08 2024-05-14
.NET 6(LTS) 2021-11-08 2024-11-12
  • LTS(長期的なサポート)
    • 奇数年にリリースされ、最初のリリースから 3 年間サポートされます。
  • STS(標準期間サポート)
    • 偶数年にリリースされ、それ以降の STS または LTS リリースから 6カ月間サポートされます。
    • リリースは、基本的に 12か月ごとに行われるため、STS リリースのサポート期間は 18カ月となります。

OS毎の利用可否

https://github.com/dotnet/core/blob/main/release-notes/8.0/supported-os.md

OS .NET 8(LTS) .NET 9
Windows Server 2025
Windows 11
Windows Server 2022
Windows 10
Windows Server 2019
Windows Server 2016

アプリケーションの発行

https://learn.microsoft.com/ja-jp/dotnet/core/deploying/

開発プロジェクトにおける CI 観点からは、コマンドラインでの手法が必要ですが、まずは、手作業の手順を記載しておきます。
ソリューションエクスプローラーで、プロジェクトを選択、右クリックで「発行」を選択します。

ターゲット等をステップに従い選択します。

上記で「完了」を選択して発行が完了すると、下記画面が表示されるので「すべての設定を表示」を選択します。

配置モードとして「フレームワーク依存」「自己完結」の選択ができます。

「自己完結」を選択した場合は「単一ファイルの作成」にチェックをします。

  • フレームワーク依存
    • 対象アプリと依存関係のみを含むアプリが生成されます。このように発行した場合、実行環境に .NET ランタイムを別途導入が必要となります。
  • 自己完結
    • .NET ランタイムとライブラリ、さらに対象アプリと依存関係を含むアプリが生成されます。このように発行した場合、.NET ランタイムがインストールされていないコンピューター上で対象アプリを実行可能となります。

メリットとデメリット

.NET Framework 利用

  • メリット
    • 現時点では、プリインストールされている .NET Framework ランタイムを利用するだけなので、手間がかかりません。
  • デメリット
    • 開発終了しているので、機能強化は望めなく、いつかは終焉が訪れます。

.NET 利用

  • メリット
    • Android、Apple、Linux、Windows オペレーティング システムで利用可能です。
  • デメリット
    • .NET ランタイムは、Windows OS にプレインストールされていません。
    • ライフサイクルが LTS でも 3年間と比較的短く感じます。

出典

本記事は、2024/12/19 Qiita 投稿記事の転載です。

.NET Framework と .NET

Discussion