インストール - .NET Framework
概要
.NET Frameworkは、Microsoft が開発したWindowsプラットフォーム専用の包括的なアプリケーション開発プラットフォームである。
2002年の初版リリース (バージョン 1.0) 以来、20年以上に渡りWindowsアプリケーション開発の中核を担ってきた。
.NET Frameworkは、以下に示す主要コンポーネントで構成される。
| コンポーネント | 説明 |
|---|---|
| CLR (Common Language Runtime) | マネージドコードの実行環境 JITコンパイル、ガベージコレクション、セキュリティ管理、型安全性を担う。 |
| BCL (Base Class Library) | 文字列、数値、コレクション、I/O 等、CLRが提供する最小限の基盤クラスライブラリ |
| FCL (Framework Class Library) | ASP.NET、Windows Forms、WPF、WCF 等、Microsoft固有の拡張クラスライブラリ |
対応プログラミング言語は、C#、VB.NET、F#、C++/CLI等、60以上にわたる。
.NET FrameworkはWindows専用プラットフォームであり、MacOSおよびLinuxでは動作しない。
最新版は 2022年8月にリリースされた .NET Framework 4.8.1 であり、ARM64ネイティブサポートおよびアクセシビリティ強化が追加された。
現在 .NET Framework はメンテナンスモードにあり、セキュリティ修正のみが提供される。
新規開発には、クロスプラットフォーム対応のオープンソース実装である.NET 10以降が推奨される。
.NET Frameworkのアーキテクチャ
.NET Frameworkは、CLRを中心とした階層構造を持つ。
CLRがハードウェアとの橋渡しを担い、その上にCTS / CLSによる型システム、BCL/FCLによるクラスライブラリが積み重なる形で構成される。
CLR (Common Language Runtime)
CLRは、.NET Frameworkの仮想マシンコンポーネントであり、マネージドコードの実行基盤を提供する。
CLRが担う機能を以下に示す。
- JITコンパイル
- MSIL (Microsoft Intermediate Language) をネイティブコードに変換して実行する。
- ガベージコレクション
- 不要なオブジェクトを自動的に検出・解放し、メモリ管理を担う。
- セキュリティ管理
- コードアクセスセキュリティ (CAS) により、コードの実行権限を制御する。
- 型安全性の保証
- 型チェックを実施し、不正なメモリアクセスを防止する。
- スレッド管理
- マネージドスレッドのスケジューリングと同期を担う。
- 例外処理
- 構造化例外処理 (SEH) を提供する。
CTS (Common Type System) / CLS (Common Language Specification)
CTSは、.NET Frameworkでサポートする全ての言語が共有する型体系の標準である。
- CTS (Common Type System)
- 全言語共通の型体系を定義する。値型 (スタック) と 参照型 (ヒープ) を区別する。
- 例: C#の
int、VB.NET のIntegerは、いずれも CTS のSystem.Int32に対応する。
- CLS (Common Language Specification)
- CTSの部分集合であり、言語間の相互運用性を保証するルール集である。
- CLSに準拠したコードは、サポートされるあらゆる.NET言語から利用可能となる。
BCL / FCL
BCLとFCLは、.NET Frameworkが提供するクラスライブラリの2つの階層である。
- BCL (Base Class Library)
- CLRが提供する最小限の基盤クラスライブラリ
- 文字列処理、数値演算、コレクション、I/O、ネットワーク通信等、基本的なAPIを提供する。
- FCL (Framework Class Library)
- BCLを包含し、Microsoft固有の拡張クラスライブラリを加えたもの。
- ASP.NET、Windows Forms、WPF、WCF、WF等、各種アプリケーションフレームワークを含む。
- FCLとCLRを合わせた全体が、所謂.NET Frameworkを構成する。
JIT コンパイルの流れ
.NET Frameworkでは、ソースコードからネイティブコードへの変換が以下の手順で行われる。
- ソースコード (C#等) をコンパイラがMSIL (Microsoft Intermediate Language)に変換し、アセンブリ (.dll / .exe) に格納する。
- アプリケーション実行時にCLRがアセンブリをロードする。
- メソッドの初回呼び出し時に、JITコンパイラがMSILをネイティブコードに変換する。
- 変換されたネイティブコードをメモリにキャッシュする。
- 同一メソッドの2回目以降の呼び出しは、キャッシュされたネイティブコードを直接実行する。
ガベージコレクション
CLRのガベージコレクタ (GC) は、マーク・スイープ方式と世代別GCを組み合わせてメモリを管理する。
- マーク・スイープ方式
- ルートオブジェクトから到達可能なオブジェクトをマークし、到達不可能なオブジェクトをスイープ (解放) する。
- 世代別GC
- オブジェクトを 3 つの世代に分類し、効率的にメモリを回収する。
世代別GCの各世代を以下に示す。
- 世代 0
- 最新のオブジェクト
- 最も頻繁にGCの対象となる。
- 短命なオブジェクト (一時変数等) を収容する。
- 世代 1
- 世代0のGCを1回生き残ったオブジェクト
- バッファとして機能する。
- 世代 2
- 2回以上のGCを生き残った長命なオブジェクト
- 静的オブジェクト等を収容する。
- GCの頻度は最も低い。
アセンブリ
アセンブリは、.NET Frameworkにおける配布および実行の単位である。
アセンブリの構成要素を以下に示す。
- Assembly Manifest
- アセンブリのメタデータ
- バージョン、依存関係、エクスポートされる型の情報を含む。
- MSILコード
- コンパイルされた中間言語コード
- リソース
- 画像、文字列等の埋め込みリソース
アセンブリの種別を以下に示す。
- プライベートアセンブリ
- アプリケーション専用のアセンブリ
- アプリケーションディレクトリに配置する。
- 共有アセンブリ
- 複数のアプリケーションで共有するアセンブリ
- GAC (Global Assembly Cache) に登録する。
- GACへの登録には、強い名前 (Strong Name) による公開鍵署名が必須である。
バージョン履歴
バージョンと CLR の対応
下表に、.NET Frameworkの各バージョンとリリース年、CLRバージョン、その他の機能を示す。
| バージョン | リリース年 | CLR バージョン | 主な新機能 |
|---|---|---|---|
| 1.0 | 2002 | CLR 1.0 | 初版。基本的なマネージド実行環境 |
| 1.1 | 2003 | CLR 1.1 | ASP.NET モバイルコントロール、IPv6 サポート |
| 2.0 | 2005 | CLR 2.0 | ジェネリック、64 ビットサポート、ClickOnce デプロイ |
| 3.0 | 2006 | CLR 2.0 | WPF、WCF、WF の統合 |
| 3.5 | 2007 | CLR 2.0 | LINQ、Expression Trees、HashSet |
| 4.0 | 2010 | CLR 4 | 並列処理 (TPL、PLINQ)、dynamic キーワード
|
| 4.5 | 2012 | CLR 4 | 非同期処理 (async/await)、Windows 8 標準搭載 |
| 4.5.1 | 2013 | CLR 4 | 非同期デバッグ改善、Windows 8.1 標準搭載 |
| 4.5.2 | 2013 | CLR 4 | HTTP/2 サポート |
| 4.6 | 2015 | CLR 4 | RyuJIT コンパイラ、Windows 10 標準搭載 |
| 4.6.1 | 2015 | CLR 4 | HTTPS / TLS 1.2 改善 |
| 4.6.2 | 2016 | CLR 4 | WPF / WinForms 改善 |
| 4.7 | 2017 | CLR 4 | .NET Standard サポート強化 |
| 4.7.1 | 2017 | CLR 4 | アクセシビリティ改善 |
| 4.7.2 | 2018 | CLR 4 | .NET Standard 2.0 完全対応 |
| 4.8 | 2019 | CLR 4 | WPF / WinForms 改善、アクセシビリティ向上 |
| 4.8.1 | 2022 | CLR 4 | ARM64 ネイティブサポート、アクセシビリティ強化 |
CLR 2.0は、.NET Framework 2.0、3.0、3.5で使用される。
CLR 4は、.NET Framework 4.0以降の全てのバージョンで使用される。
4.5 以降はインプレース更新であり、CLR のバージョンは変わらない。
Windowsバージョンごとのプリインストールバージョン
各Windows OSのバージョンにプリインストールされている.NET Frameworkのバージョンを以下に示す。
| OS バージョン | プリインストール版 | 追加インストール可能な版 |
|---|---|---|
| Windows 11 (24H2 以降) | 4.8.1 | - |
| Windows 11 (22H2) | 4.8.1 | - |
| Windows 11 (21H2) | 4.8 | 4.8.1 |
| Windows 10 (22H2) | 4.8 | 4.8.1 |
| Windows 10 (21H2) | 4.8 | 4.8.1 |
| Windows 10 (May 2019 Update) | 4.8 | - |
| Windows 10 (October 2018 Update) | 4.7.2 | 4.8 |
| Windows 8.1 | 4.5.1 | 4.8 |
| Windows Server 2025 | 4.8.1 | - |
| Windows Server 2022 | 4.8 | 4.8.1 |
| Windows Server 2019 | 4.7.2 | 4.8 |
| Windows Server 2016 | 4.6.2 | 4.8 |
サポート状況
各バージョンのサポート状況を以下に示す。
- .NET Framework 4.8.1 / 4.8
- Windowsのコンポーネントとして、親のWindows OSと同じライフサイクルに従い継続サポートされる。
- .NET Framework 4.5.2 / 4.6 / 4.6.1
- 2022年4月26日にサポート終了
- .NET Framework 4.0 / 4.5 / 4.5.1
- 2016年1月12日にサポート終了
- .NET Framework 3.5 SP1
- OS バージョンにより異なるが、概ね2029年4月までサポート
.NET Framework 4.xはインプレース更新のため、システムに複数の4.xバージョンが共存することはできない。
前提条件
対応 OS
.NET Framework 4.8.1の対応OSを以下に示す。
- Windows 11 (全バージョン)
- Windows 10 (バージョン 21H2、22H2)
- Windows Server 2022
- Windows Server 2025
.NET Framework 4.8の対応OSを以下に示す。
- Windows 11
- Windows 10 (May 2019 Update 以降)
- Windows 8.1
- Windows 7 SP1
- Windows Server 2022
- Windows Server 2019
- Windows Server 2016
- Windows Server 2012 R2
- Windows Server 2012
- Windows Server 2008 R2 SP1
ハードウェア要件
下表に、.NET Framework 4.5以降に共通するハードウェア要件を示す。
| 項目 | 要件 |
|---|---|
| プロセッサ | 1[GHz]以上 |
| RAM | 512[MB]以上 |
| ディスク容量 | 4.5[GB]以上の空き容量 |
| アーキテクチャ | 32ビット / 64ビット両対応 |
ダウンロード
公式ダウンロードページ
.NET Framework の公式ダウンロードページを以下に示す。
- .NET Framework 4.8.1
- 全てのバージョン
インストーラーの種類
.NET Frameworkのインストーラーには、Webインストーラーとオフラインインストーラーの2種類がある。
- Webインストーラー
- インターネット接続が必要。ファイルサイズが小さい。(数[MB]程度)
- OS の言語設定に対応した言語パックを自動的にダウンロードしてインストールする。
- オフラインインストーラー
- インターネット接続が不要
- ファイルサイズが大きい。(数百[MB]程度)
- 言語パックは含まれないため、必要に応じて別途ダウンロードが必要である。
Developer Pack と Runtimeの違い
下表に、Developer PackとRuntimeの違いを示す。
| 項目 | Runtime | Developer Pack |
|---|---|---|
| 用途 | アプリケーション実行 | アプリケーション開発 |
| 対象ユーザー | エンドユーザー | 開発者 |
| 含まれるもの | ランタイムのみ | Runtime + 開発ツール + リファレンスアセンブリ + IntelliSense ファイル |
| Visual Studio での開発 | 不要 | 必要 |
| ファイルサイズ | 小 | 大 |
Language Pack (言語パック)
Language Packは、エラーメッセージおよびUIテキストのローカライズリソースを提供するパッケージである。
- Webインストーラーを使用する場合、OSの言語設定に対応するLanguage Packが自動的にインストールされる。
- オフラインインストーラーにはLanguage Packが含まれないため、必要に応じて公式ダウンロードページから別途ダウンロードする。
- サポート言語は英語、日本語、中国語、スペイン語、フランス語、ドイツ語等多数である。
インストール
GUI によるインストール
GUIを使用した.NET Frameworkのインストール手順を以下に示す。
- 公式ダウンロードページから[Download]を選択して、インストーラー (.exe) をダウンロードする。
- ダウンロードした実行ファイルをダブルクリックして起動する。
- ユーザアカウント制御 (UAC) の確認ダイアログが表示された場合は[はい]を選択する。
- セットアップウィザードの指示に従い、インストールを進める。
- インストール完了後、必要に応じてPCを再起動する。
コマンドラインによるサイレントインストール
コマンドラインを使用してサイレントインストールを行う場合は、以下のコマンドを実行する。
ndp481-web.exe /q /norestart
下表に、主なパラメータを示す。
| オプション | 説明 |
|---|---|
/q |
クワイエット (サイレント) モード UIを表示せずにインストールを実行する。 |
/passive |
パッシブモード プログレスバーのみを表示する。 |
/AcceptEULA |
ライセンス条項に自動的に同意する。 |
/norestart |
インストール完了後に再起動しない。 |
/forcerestart |
インストール完了後に再起動を強制する。 |
Windows の機能の有効化 (.NET Framework 3.5)
.NET Framework 3.5は、Windowsの機能として有効化する方法でインストールできる。
- コントロールパネルを開き、[プログラム]を選択する。
- [Windowsの機能の有効化または無効化]を選択する。
- [.NET Framework 3.5 (.NET 2.0および3.0を含む)]にチェックを入力する。
- [OK]を選択する。
- Windows Updateからコンポーネントが自動的にダウンロードおよびインストールされる。
DISMコマンドによるインストール (.NET Framework 3.5)
DISMコマンドを使用して .NET Framework 3.5をインストールする方法を以下に示す。
インターネット接続がある環境では、以下のコマンドを管理者として実行する。
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All
インターネット接続がない環境では、Windows インストールメディアを使用して以下のコマンドを実行する。
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:D:\sources\sxs
DISMコマンドの主なパラメータを以下に示す。
| パラメータ | 説明 |
|---|---|
/Online |
現在実行中のOSに対して操作を行う。 |
/Enable-Feature |
指定した機能を有効化する。 |
/FeatureName:NetFx3 |
.NET Framework 3.5の機能名を指定する。 |
/All |
親機能を含めて全ての機能を有効化する。 |
/LimitAccess |
Windows Update および WSUSへの接続を避け、ローカルソースのみを使用する。 |
/Source |
インストールメディア内のソースファイルパスを指定する。 D:\sources\sxs の D: はインストールメディアのドライブレターを指す。 |
Developer Packのインストール
Developer Packは、Visual Studioを使用した開発環境の構築に必要である。
- 公式ダウンロードページから、Developer Packのインストーラーをダウンロードする。
- ダウンロードした実行ファイルをダブルクリックして起動する。
- セットアップウィザードの指示に従いインストールを進める。
- Visual Studioを再起動し、ターゲットフレームワークに.NET Framework 4.8.1が表示されることを確認する。
インストールの確認
レジストリによる確認
.NET Framework 4.5以降のインストール状態は、以下のレジストリキーで確認できる。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full
下表に、Release DWORDの値と対応するバージョンを示す。
| Release DWORDの値 (以上) | .NET Frameworkバージョン |
|---|---|
| 533325 | 4.8.1 |
| 528040 | 4.8 |
| 461808 | 4.7.2 |
| 461308 | 4.7.1 |
| 460798 | 4.7 |
| 394802 | 4.6.2 |
| 394254 | 4.6.1 |
| 393295 | 4.6 |
| 379893 | 4.5.2 |
| 378675 | 4.5.1 |
| 378389 | 4.5 |
コマンドプロンプトでの確認
コマンドプロンプトから REG QUERY コマンドを使用して確認する場合は、以下のコマンドを実行する。
REG QUERY "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" /v Release
PowerShellでの確認
PowerShellを使用して、インストールされている全ての.NET Frameworkバージョンを確認する場合は、以下のスクリプトを実行する。
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse |
Get-ItemProperty -Name Version -ErrorAction SilentlyContinue |
Where-Object { $_.Version -match '^\d+\.\d+' } |
Select-Object PSChildName, Version
特定のバージョン (例: 4.8) がインストールされているかどうかを確認する場合は、以下のコマンドを実行する。
(Get-ItemPropertyValue -LiteralPath 'HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release) -ge 528040
True が返された場合、.NET Framework 4.8以上がインストールされている。
CLR バージョンの確認
下表に、CLRバージョンと.NET Frameworkバージョンの対応を示す。
| CLR バージョン | 対応する .NET Framework バージョン |
|---|---|
| CLR 1.0 | 1.0 |
| CLR 1.1 | 1.1 |
| CLR 2.0 | 2.0、3.0、3.5 |
| CLR 4 | 4.0、4.5、4.5.1、4.5.2、4.6、4.6.1、4.6.2、4.7、4.7.1、4.7.2、4.8、4.8.1 |
C#のソースコードから現在実行しているCLRのバージョンを確認する場合は、以下のコードを使用する。
Console.WriteLine(Environment.Version);
.NET Framework と .NET 5以降の違い
下表に、.NET Frameworkと.NET 5以降 (.NET 8等) の主な違いを示す。
| 項目 | .NET Framework (4.8.1) | .NET 5 以降 |
|---|---|---|
| 対応プラットフォーム | Windowsのみ | Windows、MacOS、Linux (クロスプラットフォーム) |
| ライセンス | プロプライエタリ (コンポーネント) | オープンソース (MIT ライセンス) |
| パフォーマンス | 安定 | より高速・最適化 |
| 配置方式 | インプレース更新 (単一バージョンのみ共存可) | サイドバイサイド実行可能 |
| コンテナ対応 | 限定的 | Docker、Kubernetesに対応 |
| 開発方針 | メンテナンスモード (セキュリティ修正のみ) | アクティブ開発 |
| 推奨用途 | 既存アプリケーションの保守 | 新規開発 |
| デスクトップ UI | WPF、WinForms | WPF、WinForms、MAUI |
| Web フレームワーク | ASP.NET 4.x | ASP.NET Core |
アンインストール
コントロールパネルからのアンインストール
コントロールパネルを使用してアンインストールする手順を以下に示す。
- コントロールパネルを開き、[プログラムと機能]を選択する。
- 一覧から "Microsoft .NET Framework X.X" を選択する。
- [アンインストール]を選択する。
- 確認ダイアログが表示されたら、[はい]を選択する。
- アンインストール完了後、PCを再起動する。
.NET Framework 4.xはインプレース更新のため、古いバージョンを削除するには新しいバージョンの削除も必要になる場合がある。
また、Windowsにプリインストールされたバージョンは、Windows Updateにより再インストールされる可能性がある。
.NET Framework Cleanup Tool
.NET Framework Cleanup Tool は、Aaron Stebner が開発した .NET Framework の完全削除ツールである。
このツールは以下の情報を徹底的に削除する。
- レジストリ エントリ
- インストールされたファイル
- Windows Installer の情報
このツールは、通常のアンインストール手順でインストール・アンインストール・修復エラーが繰り返し発生する場合に使用する。
使用後は、他の .NET Framework バージョンの修復または再インストールが必要になる場合がある。
トラブルシューティング
.NET Framework修復ツール
Microsoft .NET Framework Repair Toolは、.NET Framework のインストール・アップデート・修復エラーを自動的に修復するツールである。
- .NET Framework 3.5 SP1〜4.8.1までのバージョンをサポートする。
- ツールが既知の問題を自動的に検出し、修復を行う。
- インストールや修復が繰り返し失敗する場合に使用する。
一般的なエラーと対処法
下表に、よくあるエラーと対処法を示す。
| エラー | 対処法 |
|---|---|
| 0x800736FD (ファイルが見つからない) | オフラインインストーラーを使用する。 または、Windows インストールメディアを使用してOSを修復する。 |
| MSI エラー 1603 (インストール失敗) | .NET Framework Repair Toolを実行する。 解決しない場合は、Cleanup Toolで削除後、再インストールする。 |
| 管理者権限不足 | インストーラーを右クリックして、[管理者として実行]を選択する。 |
| ディスク容量不足 | 4.5[GB]以上の空き容量を確保してから再実行する。 |
| DISMエラー (.NET Framework 3.5インストール時) | インストールメディアのパスとOS バージョンが一致していることを確認する。 |
Windows Update との関係
.NET Framework 4.5以降は、Windowsのコンポーネントとして位置づけられており、Windows Updateを通じてセキュリティパッチが配布される。
- .NET Frameworkのサポートは、親のWindows OSのライフサイクルに従う。
- Windows Updateを無効化している環境では、.NET Frameworkのセキュリティ更新が適用されないため注意が必要である。
- Windows Updateで.NET Frameworkの更新プログラムが配布された場合、適用後に再起動が必要になることがある。