Microsoft .NET Framework(マイクロソフト ドットネット フレームワーク)は、マイクロソフトが開発していたアプリケーション開発・実行環境である。バージョン4.8をもって.NET Frameworkのメジャーアップデートは終了し、セキュリティとバグ修正のための更新は継続されるが、以降の新規開発における推奨環境は.NETとなった。

Windowsアプリケーションだけでなく、XML WebサービスやウェブアプリケーションなどWebベースのアプリケーションなども包括した環境となっている。一般に.NETという場合、.NET全体の環境を指す。現在はOSS版の.NET CoreやMonoも包括した技術仕様の総称を.NETと呼び、プロプライエタリの初期から存在する従来のWindows専用実装のみを.NET Frameworkと呼んで区別している。

## アーキテクチャ

### 共通言語基盤

.NET Frameworkにおける最も重要な概念は共通言語基盤 (CLI) に含まれている。CLIの目的は言語に依存しない開発環境および実行環境を提供することである。マイクロソフトによるCLIの実装は共通言語ランタイム (CLR) と呼ばれる。CLRは次の主要な5項目からなる。

- 共通型システム (CTS: Common Type System)
- 共通言語仕様 (CLS: Common Language Specification)
- 共通中間言語 (CIL: Common Intermediate Language)
- ジャストインタイムコンパイラ (JIT: Just-in-time compiler)
- 仮想実行システム (VES: Virtual Execution System)

### アセンブリ

CILのコードはアセンブリ(WindowsにおいてはPE形式)の中に格納される。アセンブリは配置・バージョン・セキュリティの単位である。

### メタデータ

全てのCILコードはそれ自身の情報をメタデータとして保持している。CLRは正しいメソッド呼び出しが行われていることをメタデータによってチェックしている。メタデータはコンパイラによって生成されるが、開発者が独自のメタデータをカスタム属性として付加することも可能である。

## 設計目標と重要な特徴

.NET Frameworkは次のような目標に基づいて設計されている。

## 開発環境

C#、Visual Basic .NET、F#、JScript .NETのコンパイラ、各種ツール、ドキュメントなどのSDKはマイクロソフトから無償で配布されている。

### 統合開発環境

.NET Frameworkに対応しているものは以下。

- Microsoft Visual Studio
- Visual Studio Code
- JetBrains Rider
- SharpDevelop - 2016年を最後に終了
- Embarcadero Prism - 2012年を最後に終了
- Borland C# Builder - 2006年を最後に終了

.NET Frameworkだけでなく、互換環境であるMonoや.NET Coreに対応しているものもある。

### Microsoft Visual Studio へのプラグイン

- ReSharper - ジェットブレインズ

## オープンソース化

2014年11月12日、米国マイクロソフトによるイベント「Connect();」で、.NET Frameworkのうち下記の物をMITライセンスの下で公開したことが発表された。

- .NET Framework 4.6 リファレンスソース
- ASP.NET 5
- Entity Framework 6
- .NET Core 1.0 (発表当初は5)
- .NET Compiler Platform ("Roslyn")

これらは製品レベルの実装であり、シェアードソース実装ではない。ターゲットとして、既存のWindowsプラットフォームの他に、LinuxとOS Xが含まれる。

.NET Framework 4.6 のリファレンスソースがMITライセンスになったことにより、それが Mono 4.0 に取り込まれた。

## マイクロソフト社以外の実装

また.NET Frameworkの基盤となっている仕様である共通言語基盤 (CLI) はEcmaインターナショナル、ISO、JISにて標準化されており、マイクロソフト以外のベンダーが独自に実装することもできる。実際にXamarinによるMonoプロジェクトをはじめ、いくつかのオープンソースによる実装プロジェクトがある。それらを使うことで.NET FrameworkでコンパイルしたプログラムをLinuxやmacOSなどのWindows以外のOSでも動かすこともできる。なお、マイクロソフトによるCLIの実装を共通言語ランタイム (CLR) と呼ぶ。.NET FrameworkはCLRにその他ライブラリ群を加えたものと言える。

近年では共通言語ランタイム上でJava仮想マシンの実装を試みるIKVM.NETなどのオープンソースプロジェクトも活発化している。

## バージョン

### CLR バージョンと共存性

各バージョンは上位互換性が概ねある。しかし、上位互換性が保証されているのは、CLR のバージョンが同じものであり、CLR のバージョンが同じ物は1つしかインストールできない。現在、下記の CLR バージョンが存在する。

- 1.0: .NET Framework 1.0
- 1.1: .NET Framework 1.1
- 2.0: .NET Framework 2.0〜3.5
- 4.0: .NET Framework 4.0〜4.8

### .NET Framework 1.0

.NET Frameworkの最初のバージョンである。Windows 98、NT 4.0、2000、XP向けに提供された。
Windows XP SP1のCD-ROMには標準でインストーラーが収録されている。

### .NET Framework 1.1

.NET Frameworkの最初のバージョン更新である。
Windows XP SP2およびSP3のCD-ROMには標準でインストーラーが収録されている。

.NET Framework 1.0からの主な変更点

- ASP.NETのモバイル向け機能の追加
- セキュリティ仕様の変更
- ODBCとOracle Database用のデータ接続の標準サポート
- IPv6のサポート
- 多数のAPIの変更

### .NET Framework 2.0

いくつかのAPIの追加とCLRに変更が加えられた。次のような特徴を持っている。Microsoft Visual Studio 2005以降で開発可能である。
Windows Server 2003には標準搭載されている。Windows NT 4.0への対応はこのバージョンで打ち切られた。

.NET Framework 1.1からの主な変更点

- データバインディングの新しいAPIの追加
- ASP.NETのウェブコントロールを幾つか追加
- ネイティブアプリケーションへの新しいホスティングAPI
- CLRのジェネリクスの対応
- 64ビット(x64とIA-64)システムへの対応
- .NET Micro Frameworkの追加
- 多数のAPIの変更

### .NET Framework 3.0

もともと「WinFX」という名称で提供される予定だったが、提供の5か月前の2006年6月に現在の名称に変更された。Windows VistaやWindows Server 2008には標準搭載されている。Windows 98、ME、2000への対応はこのバージョンで打ち切られ、Windows XPより前のOSでは動作しない。

クラスライブラリやCLRなどの基盤は.NET Framework 2.0から変更されておらず、以下の4つの新しいテクノロジーを加えたものとなっている。

### .NET Framework 3.5

Windows 7に標準搭載されている。Visual Studio 2008以降で開発可能。Windows 8以降では既定で無効化されており、インターネット接続もしくはインストールメディアを利用して明示的な有効化すなわちインストールが必要となる。バージョン3.0と同様、CLRのバージョンは2.0のままで、いくつかの追加が行われている。.NET Framework 3.5のリリースと同時に基本クラスライブラリ (BCL) はMicrosoft Reference Licenseのライセンス下で公開された。また、J#言語が開発言語として対応を終了した。サポート終了は、バンドルしているWindowsのサポート終了日か2028年10月10日のどちらか短い方となる。

主に含まれる変更点は

- ASP.NET AJAXの対応
- Language Integrated Query
- C#とVBコンパイラの変更

等がある。

### .NET Framework 4

2010年4月13日にリリースされた。CLRのバージョンは4となる。Visual Studio 2010以降で開発可能。

- F# のフル サポート
- 動的言語ランタイム (DLR)
- Managed Extensibility Framework (MEF)
- Parallel Extensions(並列プログラミング)
- Velocity(分散キャッシュAPI)
- NUI(Windows タッチ)アプリケーションの開発

など。

### .NET Framework 4.5

2012年8月15日にリリースされた。Windows 8に標準搭載されている。Visual Studio 2012以降で開発可能。CLRのバージョンは継続して4。前バージョンである.NET 4を置き換える形となっている。そのため.NET 4とは共存できないが、.NET 4.5は.NET 4とほぼ完全な互換性があるとされている。Windows XPへの対応が打ち切られ、Vista以降が必須となった。

- Windows Modernスタイル アプリケーション(Windowsストアアプリ)の開発
- 非同期プログラミング
- 既存機能の大幅な改良

4.5.1が2013年10月12日にリリースされた。Windows 8.1に標準搭載されている。4.5.2が2014年5月5日にリリースされた。なお.4.5.1はVisual Studio 2013で対応したが、追加パッケージ (Developer PackまたはTargeting Pack) をインストールすることで、Visual Studio 2012にて4.5.1以降を開発に利用することも可能である。

### .NET Framework 4.6

2015年7月20日にリリースされた。Windows 10 ver.1507に標準搭載され、Vista以降が必要。Visual Studio 2015にて対応。継続して4.xは一つのバージョンしかインストールできない。

- ASP.NET 5対応
- RyuJIT - 新しい64ビット版のJITコンパイラ
- .NET Native
- オープンソース化

4.6.1が2015年11月30日にリリースされた。4.6.1ではWindows Vista/Windows Server 2008のサポートが終了している。4.6.2は2016年8月2日にリリースされた。

### .NET Framework 4.7

Windows 10 ver.1703と同時に、2017年4月5日にリリースされた。これまでの.NET/Visual Studioの新バージョン公開スケジュールとは異なり、.NET 4.7よりもVisual Studio 2017のリリースが先行する形となった。旧OSへのバックポートもアナウンスされ、2017年5月2日に利用可能となった。なお、.NET Framework 4.7以降はWindows 10 ver.1507/1511についてはWindows 10 ver.1507/1511のサポートが終了しているため、サポート外になっている。

2017年10月17日、Windows 10 ver.1709と同時に4.7.1がリリースされた。
2018年4月30日、Windows 10 ver.1803と同時に4.7.2がリリースされた。

### .NET Framework 4.8

2019年4月18日に正式リリースされた。本バージョンをもって.NET Frameworkのメジャーアップデートは終了するが、バグ修正やセキュリティ修正のサポート、Windowsへの搭載は継続される。

Windows 11のInsider Previewビルド22504には、ARM64のネイティブサポートを追加した.NET Framework 4.8.1が搭載されることがアナウンスされた。

2022年8月9日、Windows 10 ver.20H2以降を対象に4.8.1がリリースされた。