.NET Frameworkと.NETの違い、C#初心者はどちらを選ぶ?【今から学ぶなら答えは1つ】
C#入門編の番外編です。C#を学び始めようと調べると、.NET Frameworkと.NETという、そっくりな名前の2つに出会いますね。
同じものなのか、違うものなのか。どちらを使えばよいのか。この最初の分かれ道で立ち止まってしまう方は少なくありません。
この記事では、2つの関係を歴史から整理します。結論を先に言うと、今から学ぶなら最新の.NET(現在は.NET 10)一択です。
後半には、自分のプロジェクトがどちらで動いているかを確かめる5分のミニハンズオンも用意しました。
以下のような方に役立つ内容となっています。
- C#を学び始めたいが、「.NET」と「.NET Framework」の違いが分からない
- Visual Studioで「(.NET Framework)」付きのテンプレートを選ぶべきか迷った
- 会社のシステムが.NET Frameworkなので、今さら.NETを学んでよいのか気になる
「.NET」と「.NET Framework」って同じもの?名前が似すぎて分からないよ…。
実は別物なんです。今から学ぶなら答えは1つなので、安心してください。
なぜ2つあるのかも含めて、一緒に整理していきましょう!
先に結論:今から学ぶなら .NET 10
最初に、この記事の結論からお伝えします。今(2026年8月時点)からC#を学ぶ・新しくアプリを作るなら、.NET 10(最新LTS)一択です。
LTS(Long Term Support)とは長期サポート版のことで、リリースから3年間の安定したサポートを受けられます。腰を据えて学習・開発するのに適したバージョンです。
一方の.NET Frameworkは、決して「ダメなもの」ではありません。機能追加が終了した、完成済みの旧世代であり、業務システムでは今も現役で動いています。
それでも迷う必要がない理由は明快です。Microsoftによる新機能・性能改善・新しい分野への対応は、すべて.NET側で行われているためです(.NET公式サポートポリシー)。
そして、もう1つ重要な点があります。
どちらも主にC#でプログラムを書くため、C#で学んだ文法やオブジェクト指向などの基本概念は、.NET Frameworkの現場でもほぼそのまま通用します。
ただし、利用できるAPIやプロジェクト構成、対応するC#のバージョンなどには違いがあります。
状況別の選び方をまとめると、次の通りです。
| 状況 | 選ぶもの |
|---|---|
| これからC#を学ぶ | .NET 10(最新LTS) |
| 新しくアプリを作る | .NET 10(最新LTS) |
| 会社の既存システムを保守する | そのシステムが使っているもの(.NET Frameworkの場合も多い) |
なぜ2つの似たものが存在するのか、そしてこのような選び方でよいかという理由について、歴史の経緯も含めて順に見ていきましょう。
なお、「.NET」という言葉は、C#・ライブラリ・ツールを含む技術全体を指して使われることもあります。
この記事では、現行の実行基盤の名前として使います(言葉の使い分けは記事末尾のFAQで整理しています)。
なぜ2つあるのか:歴史を1枚図で
そっくりな名前が2つ並んでいるのは、C#の実行基盤がたどってきた歴史の経緯によるものです。
全体像を1枚の図にすると、次のようになります。2本あった線のうち、進化の本流が.NET側の1本になっていくイメージでとらえてください。

.NET Framework(2002〜):Windows専用として成熟
.NET Frameworkは2002年に登場しました。C#と同時に生まれた実行基盤(C#で書いたプログラムを動かすための土台)です。
対応OSはWindows専用です。WinFormsやWPF、ASP.NET(旧)といったアプリの土台として、業務システムを中心に広く普及しました。
バージョンは長年にわたって更新され、4.8系が最終世代です。機能追加はすでに終了し、現在は不具合やセキュリティの修正のみが続いています。
.NET Core(2016〜):クロスプラットフォームへの作り直し
時代が進むと、Linuxサーバーやコンテナを含む、さまざまな環境でC#を動かしたいというニーズが強くなりました。
Windowsを前提とする.NET Frameworkだけでは、こうした用途に十分対応できません。
そこでMicrosoftは、C#の実行基盤をクロスプラットフォームやクラウド利用を前提に再設計します。2016年に正式リリースされたのが.NET Coreです。
「Core」という名前を付けて、従来の.NET Frameworkと並行して提供されました。実はここが、名前の紛らわしさの始まりです。
.NET CoreはWindowsだけでなく、LinuxやmacOSでも動作します。また、オープンソースで開発され、モジュール化や実行性能の改善も積極的に進められました。
こうした強みから、サーバーやクラウド用途を中心に採用が広がり、次第に本流となっていきました。
.NET 5で一本化(2020〜):以後は毎年秋に番号が1つ上がる
2020年、.NET Coreは「.NET 5」と改名し、以後はこちらが唯一の本流になりました。このとき、名前から「Core」も取れています。
「一本化」といっても、.NET Frameworkが.NET 5に吸収されたわけではありません。
Frameworkは4.8系のまま存続します。ただし、新機能の開発が続く線は.NET側の1本だけになった、という意味です。
.NET Coreは3.1まで提供されましたが、次のバージョンでは「4.x」を飛ばし、「.NET 5」という名前になりました。
これは、すでに存在していた.NET Framework 4.xとの混同を避けるためです。
以後は毎年11月に .NET 6→7→8→9→10 と番号が1つずつ上がり、偶数バージョンがLTSです。2026年8月時点の最新LTSは、2025年11月にリリースされた.NET 10です。
「.NET」って、.NET Coreが名前を変えて本流になったものなんだね。
そうです。だから今の入門情報で「.NET」とだけ書いてあれば、こちらのことです。
.NET Frameworkと.NETの違い:比較表
歴史をふまえて、2つの違いを表で整理します。
| 観点 | .NET Framework | .NET |
|---|---|---|
| 位置づけ | 旧世代(完成済み) | 現行世代(本流) |
| 対応OS | Windowsのみ | Windows / Linux / macOS |
| 今後の進化 | 4.8系で機能追加終了。不具合・セキュリティ修正のみ | 毎年新バージョン。性能改善・新機能はすべてこちら |
| 実行速度 | 4.8時点の性能のまま(今後の高速化はない) | バージョンごとに性能改善が続いている |
| 対応ワークロード | WinForms / WPF / ASP.NET(旧)など | コンソール、WinForms / WPF、ASP.NET Core、Blazor、MAUI、クラウドなど |
| 業務での遭遇率 | 既存の業務システムでは今も多い | 新規開発の標準 |
| 学習情報 | 古い入門書・古い記事に多い | 現在の公式ドキュメント・新しい入門情報 |
誤解されやすいのが対応ワークロードの行です。WinFormsやWPFは.NET側でも現役で使えます。「デスクトップアプリ=.NET Framework」ではありません。
実行速度については、.NETはこれまでバージョンごとに性能改善を重ねてきました。同じC#のコードでも、新しい.NETで動かす方が有利な場面が多くなっています。
既存の業務システムでは.NET Frameworkが今も現役の場面が多くあります。保守の仕事で出会う可能性は十分あるからこそ、違いを知っておく価値があります。
例えば、Stack Overflowの開発者調査(2025年)において、ASP.NET (.NET Framework)が一定割合存在することがわかります。
ミニハンズオン:自分のプロジェクトがどちらか確かめる
ここからは、5分で終わるミニハンズオンです。Visual Studioでプロジェクトを1つ作り、それが.NETと.NET Frameworkのどちらで動くのかを自分の目で確かめます。
Visual Studioの基本的な使い方については以下を参考にしてください。
プロジェクト作成:「(.NET Framework)」付きテンプレートは選ばない
Visual Studioを起動し、「新しいプロジェクトの作成」から「コンソール アプリ」を選びます。
ここで注意が1つあります。テンプレートの一覧には、「コンソール アプリ」と「コンソール アプリ (.NET Framework)」のように、似た名前のテンプレートが並んでいます。
「(.NET Framework)」が付いている方は旧世代用で、付いていない方が.NET用です。
今回は.NETでプロジェクトを作るので、「(.NET Framework)と付いていたら選ばない」という単純なルールだけ覚えておきましょう。

何も知らなかったら、「(.NET Framework)」の方を選んじゃいそう…。
ちょっと紛らわしいですね。「(.NET Framework)と付いていたら選ばない」とだけ覚えれば大丈夫です。
プロジェクト名を「WhichDotnet」などにして進むと、「追加情報」画面が表示されます。
ここの「フレームワーク」欄で.NET 10.0が選ばれていることを確認して、そのまま作成しましょう。

csprojの<TargetFramework>を見る
プロジェクトが作成できたら、ソリューションエクスプローラーでプロジェクト名をダブルクリックしてみてください。
プロジェクトの設定ファイルWhichDotnet.csprojが開きます。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>プロジェクトがどの.NETで動くかは、この<TargetFramework>の1行で決まっています。
読み方は簡単です。net10.0なら.NET 10、net8.0なら.NET 8です。
一方、.NET Frameworkのプロジェクトは、実はcsprojの形式自体が古く、まったく違う見た目をしています。
長い設定が並ぶ中に<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>のような行があります。
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- 省略 -->
<PropertyGroup>
<!-- 省略 -->
<OutputType>Exe</OutputType>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<!-- 省略 -->
</PropertyGroup>
<!-- 省略(設定や参照がさらに続く) -->
</Project>シンプルなcsprojにnet10.0とあれば.NET、長く複雑なcsprojにv4.8とあれば.NET Framework。開いた瞬間の見た目から違うので、迷うことはありません。
新しい形式のcsprojでnet48のように.NET Frameworkを指定する場合もあります(.NETへ移行中のプロジェクトなど)。
いずれにしても、csprojを見れば分かることに変わりはありません。
つまり、会社の既存プロジェクトのcsprojを見れば、自分が保守しているシステムがどちらなのかも、わかるってことだね!
C#を学ぶには
C#の学習をこれから始める方は、C#入門編シリーズの第1回からぜひみてください。(.NETを対象としています。)
よくある迷い
最後に、このテーマでよくある疑問をQ&A形式で整理します。気になるところだけ読んでいただいても大丈夫です。
そもそも「.NET」という言葉には、どんな意味がありますか?
実は「.NET」という言葉は、文脈によっていくつかの意味で使われます。主なものは次の3つです。
- 現行の実行基盤の製品名:この記事で扱った、旧.NET Coreから続く現行世代のこと
- 技術全体の総称:C#・実行基盤・ライブラリ・ツールを含むエコシステム全体(「.NET開発者」など)
- 歴史的なブランド名:2002年の.NET Framework以来、Microsoftがこの技術群に付けてきた名前
「.NET」は文脈によって意味が変わる言葉です。迷ったら前後の文脈で判断しましょう。
会社のシステムが.NET Frameworkでも、.NETで学んで無駄になりませんか?
無駄になりません。C#の文法、オブジェクト指向、コレクション、LINQといった基礎は、どちらの世代でもほぼ共通です。
違いが出るのは、主に新しいC#文法の一部(.NET Frameworkで使えるのはC# 7.3まで)・新しいAPI・プロジェクト形式や周辺ツールです。
基礎を身につけた後に、差分として学べる範囲です。
また、新規開発では.NETが標準になっているため、最新の.NETで学んだ経験は、これからの現場でそのまま活きていきます。
同じ理由で、古い入門書やWeb記事で学び始めてしまった場合も心配いりません。
文法知識は共通資産のまま、教材だけを今の情報(「.NET Core」や「.NET 5以降」への言及がある教材)に切り替えれば大丈夫です。
今でも.NET Frameworkでしか作れないものはありますか?
あります。代表例は、Office(Word・Excel)やVisual Studioにおける機能拡張の一部です。
とはいえ、いずれも特定分野の話です。
「業務システムの保守以外にも、Frameworkの知識が生きる場面が一部残っている」という程度に覚えておけば十分です。
MonoやXamarinという名前も見かけますが?
Monoは、.NET Frameworkと互換性のある実行環境を、Windows以外のOSでも利用できるようにしたオープンソースの実装で、.NETのクロスプラットフォーム化の先駆けです。
Xamarinは、Monoの技術をベースにしたモバイルアプリ開発環境です。その役割は現在のNET MAUI等に引き継がれ、2024年5月にサポートを終了しています。
Xamarinはすでに役割を終えましたが、Monoは次の質問で触れるUnityの実行基盤など、今も使われている場面があります。
いずれにしても、今からC#を学ぶ人が、通常のアプリ開発で自分から選ぶものではない、と整理しておけば十分です。
UnityもC#を使うと聞きましたが、.NETとの関係は?
実は、この記事で比べた2つのどちらでもありません。
ゲームエンジンのUnityは、先ほどのMonoをベースにした独自のランタイムでC#を動かしています(2026年8月時点。今後は.NET本流のランタイムへの移行が予定されています)。
ただし、プログラムを書く言語は同じC#です。この記事や入門書で学ぶ文法・概念は、Unityでもそのまま共通資産になります。
.NET Framework 4.8はいつまで使えますか?
.NET Framework 4.8 / 4.8.1はWindowsの構成要素として扱われ、搭載されているWindowsがサポートされる限りサポートが続きます(.NET Framework公式サポートポリシー)。
つまり、急にサポートが切れて使えなくなるものではありません。これは、既存の業務システムが当面動き続けられる根拠でもあります。
ただし機能追加は行われないため、新規に選ぶ理由はない、という結論は変わりません。
.NET Standardとは何ですか?
.NET Frameworkと.NET Coreが並立していた時代に、両方で使えるライブラリを作るための共通仕様として生まれたものです。
C#で例えると、.NET Standardはインターフェイスで、.NET Frameworkや.NETはそれを実装する具象クラス、という関係ですね。
本流が.NETに一本化した現在では、新規開発で意識する場面はほとんどありません。
古い.NET Frameworkや、一部のUnityなど複数の実行環境で使えるライブラリを作りたい、といった開発者向けの話題です。
初心者のうちは、「幅広い環境で使えるライブラリを作るための共通仕様。名前を見かけても慌てなくてよい」と整理しておけば十分です。
まとめ
.NET Frameworkと.NETは、名前こそ似ていますが、「完成済みの旧世代」と「進化を続ける現行世代」という関係でした。
今回のポイントは以下です。
- 今から学ぶ・作るなら.NET 10(最新LTS)一択:新機能・性能改善はすべて.NET側で行われる
- .NET Frameworkは完成済みの旧世代:業務システムでは今も現役。
- 紛らわしさの正体は歴史:.NET Frameworkと並行して生まれた.NET Coreが、.NET 5として本流になった経緯のせい
- 「(.NET Framework)」付きテンプレートは選ばない:新規プロジェクト作成では.NETのものを選ぶようにする
- どちらもC#:学んだ文法・概念は世代をまたぐ共通資産になる
- 見分け方はcsproj:プロジェクトの設定ファイル(csproj)を見ればどちらか分かる
名前の紛らわしささえ整理できれば、選ぶものは1つなので迷いません。
引き続き、C#での開発について一緒に学んでいきましょう!




