「.NET Framework」「.NET Core」「.NET 10」──. 名前が似ていて、しかも「Core」が付いたり消えたりする。実務で .NET に触れていると、この命名の変遷につまずいた経験がある方は少なくないと思います。

これらは単なる呼び名の違いではなく、設計思想の分岐と、その後の再統合という歴史の産物です。名前が示す分岐点を時系列でほどいていくと、「いま自分が使っているものが何なのか」「.NET Framework 4.8 と .NET 10 は何が違うのか」が、驚くほどすっきり見えてきます。

この記事は、Microsoft の一次情報(Microsoft Learn / .NET Blog など)をもとに、.NET の歩みを整理する解説です。続く記事で扱う「.NET Framework 4.8 と .NET 10 の具体的な違い」の土台にもなります。

バージョンの表記について:本文中のバージョン事実は 2026年7月時点 のものです。.NET は毎年11月に新バージョンが出るため、参照時期によっては最新版が更新されている可能性があります。

「Core」という名前がほどけると、.NET はわかりやすくなる

先に結論の地図だけ描いておきます。.NET の歴史は、大きく3つの局面に分かれます。

  1. .NET Framework の時代(2002〜) ── Windows 専用の出発点
  2. .NET Core による分岐(2016〜) ── クロスプラットフォーム化のための「作り直し」
  3. .NET 5 以降の統一(2020〜) ── ふたつの系譜をひとつの「.NET」へ

「Core」という言葉は、この2番目の局面、つまり 「Windows から独立した、作り直しの .NET」 を指すために生まれ、統一が完了した3番目の局面で役目を終えて外されました。以下、この流れを順にたどります。

.NET Framework の登場(2002)

.NET Framework 1.0 は 2002年 に登場しました。C# という新しい言語とともに、Microsoft が「マネージド コード」の世界を本格的に打ち出した出発点です。

その中核は、次の2つでした。

そしてこの時代の .NET Framework には、いま振り返ると決定的な前提がひとつありました。Windows 依存 です。.NET Framework は Windows に深く結びつき、やがて OS に同梱されるコンポーネントとして提供されるようになります。これは当時としては合理的でした。「.NET は Windows アプリ開発の標準基盤」という位置づけで、Windows とともに配られ、Windows とともに進化していけばよかったのです。

Windows 依存という設計の限界

しかし2010年代に入り、この「Windows 依存」という前提が重荷になっていきます。背景には、開発を取り巻く環境そのものの変化がありました。

つまり、.NET Framework の強みだった「Windows との一体化」が、そのまま弱みに転じたのです。Windows 依存を前提に組み上げられた設計を部分的に手直しするだけでは、この壁は越えられませんでした。

.NET Core の登場(2016)── なぜ「別物」として作られたのか

そこで Microsoft が選んだのは、既存の .NET Framework を作り替えるのではなく、新しい系譜を並行して立ち上げる という道でした。それが .NET Core です。.NET Core 1.0 は 2016年6月 にリリースされました。

.NET Core が「別物」として設計された点は、大きく3つあります。

なぜ .NET Framework をそのまま移植しなかったのか──. 答えは、.NET Framework の多くの API が Windows の仕組みと分かちがたく結びついていたからです。Windows 前提の設計を引きずったままでは、軽量でクロスプラットフォームな基盤にはなり得ません。だからこそ Microsoft は、互換性をある程度犠牲にしてでも、ゼロから設計し直した別系統 として .NET Core を作りました。この「作り直し」という性格こそが、”Core” という名前に込められた意味です。

その後、.NET Core は 3.1(2019年12月) で一区切りを迎えます。このバージョンは “Core” を冠する最後の版であり、LTS(後述)として長く使われました。Windows 上では WPF や WinForms といったデスクトップ UI も動くようになり、.NET Core は「Web サーバー用」から「汎用の .NET」へと成熟していきました。

.NET Framework 4.8(2019)/ 4.8.1(2022)── 「枯れた安定版」へ

.NET Core が新しい主役として育っていく一方で、既存の .NET Framework はどうなったのでしょうか。

.NET Framework は 4.8(2019年4月)、続く 4.8.1(2022年8月) をもって、新機能の開発が事実上ひと区切り となりました。以降、大きな新機能が .NET Framework 側に追加されることはなくなり、開発の主戦場は完全に .NET Core / .NET 側へ移っていきます。

「廃止」ではない、という点に注意:新機能開発が止まったからといって、.NET Framework が使えなくなったわけではありません。.NET Framework は Windows に同梱される OS コンポーネントとして提供され続けており、セキュリティ更新やサービシング(不具合修正)も継続中 です。既存の .NET Framework アプリは、これまでどおり動作し、サポートも受けられます。「終了した」「廃止された」という表現は正確ではありません。位置づけとしては、新規開発の主軸ではなくなった “枯れた安定版”、いわばレガシー保守フェーズに入った、と捉えるのが実態に即しています。

.NET 5(2020)── ふたつの系譜がひとつになる

ここまでで、.NET には2つの系譜が並走している状態になりました。Windows 前提の .NET Framework と、クロスプラットフォームの .NET Core です。開発者にとっては「どちらを使えばいいのか」がわかりにくく、Microsoft 自身も、この二重構造を長く続けるつもりはありませんでした。

そこで登場したのが .NET 5(2020年11月) です。これは旧 .NET Core 系の後継でありながら、名前から “Core” を外し、単に 「.NET」 と名乗りました。ここには、命名にまつわる2つの意図的な判断があります。

こうして、.NET 5 以降は「.NET Core の後継=これからの標準の .NET」という一本道になりました。

なお、統一といっても .NET 5 の時点ですべてが一気に揃ったわけではありません。旧 .NET Framework の一部機能は移行先の整備に時間を要し、その後のバージョンで順次カバーされていきました。この「具体的に何が引き継がれ、何が変わったのか」は、次の記事で詳しく扱います。

年次リリースと LTS / STS(.NET 6〜10)

.NET 5 以降、Microsoft は 毎年11月に新しいメジャーバージョンをリリースする という予測しやすいサイクルを確立しました。そして各バージョンには、サポート期間の異なる2つの区分が交互に割り当てられます。

つまり 偶数=LTS、奇数=STS が交互に並ぶ形です。安定性を重視するなら偶数の LTS を選び、最新機能をいち早く試すなら奇数の STS を使う、という指針が立てられます。

時期 区分
.NET 5 2020年11月 (STS 相当)
.NET 6 2021年11月 LTS
.NET 7 2022年11月 STS
.NET 8 2023年11月 LTS
.NET 9 2024年11月 STS
.NET 10 2025年11月 LTS

インストールされている .NET のバージョンは、次のコマンドで確認できます。

# SDK のバージョン(例:10.0.100)
dotnet --version

# インストール済みの SDK / ランタイムを一覧表示
dotnet --info

現在地(2026年7月時点)

最後に、いまどこにいるのかを整理します。

大づかみに言えば、「新規は .NET 系、既存の Framework は安定運用を続けつつ、必要に応じて移行を検討する」というのが、2026年時点での標準的な立ち位置です。

次回:.NET Framework 4.8 と .NET 10 は、具体的に何が違うのか

ここまでで、.NET が「Windows 専用の Framework」から出発し、「Core による作り直し」を経て、「.NET 5 以降の統一」へと至った流れを見てきました。歴史の輪郭がつかめると、次に湧いてくるのは具体的な疑問のはずです。

では、同じ C# のコードでも、.NET Framework 4.8 と .NET 10 では実際に何が違うのか?

アーキテクチャ、クロスプラットフォーム対応、パフォーマンス、API の差、プロジェクト形式──. 見るべき違いはいくつもあります。そのなかには、日本語環境(CP932)で開発していると避けて通れない 文字コード(エンコーディング)の挙動の違い も含まれます。Encoding.Default が指すものが両者で異なる、という一点だけでも、ハマると厄介です。

次の記事では、この「.NET Framework 4.8 と .NET 10 の違い」を具体的に掘り下げていきます。

.NET Framework 4.8 と .NET 10 の違い