.NET 8/9 と Windows Server 2012 の2026年EOL期限
目次
TL;DR
影響 .NET 8 / .NET 9 は2026年11月10日にサポート終了、Windows Server 2012 / 2012 R2 のESUは2026年10月13日に終了
対応 .NET は .NET 10 以降への移行、Windows Server 2012 系は新しい Windows Server への移行か Azure 側への退避
境界 .NET の期限はアプリ実行基盤、Windows Server 2012 の期限はOSとそこに乗る古い .NET Framework 系アプリの問題
.NET 8 と .NET 9 のサポート終了が2026年11月10日で、Windows Server 2012 / 2012 R2 の Extended Security Updates(ESU、延長セキュリティ更新プログラム)はその4週間前、10月13日が最終日になっている。
.NET 8 / 9 が影響するのはアプリケーションのターゲットフレームワークと実行環境の範囲なのに対して、Windows Server 2012 のほうはOSの延命の終わりで、上に乗っている古い .NET Framework アプリや業務アプリの行き先まで含んでいる。
11月10日に .NET 8 LTS と .NET 9 STS が同時に止まる
Microsoft は公式 .NET Blogで、.NET 8 と .NET 9 がどちらも2026年11月10日にサポート終了すると告知している。
.NET のサポートポリシー上でも、.NET 8 はLTS(Long Term Support、長期サポート)で2023年11月14日リリース、サポート終了は2026年11月10日。
.NET 9 はSTS(Standard Term Support、標準期間サポート)で2024年11月12日リリース、サポート終了は同じ2026年11月10日になっている。
LTSの .NET 8 とSTSの .NET 9 が同じ日に終わるので、ここで誤解が起きやすい。
LTSはSTSより長く支えるという意味で、次のLTSが出るまで無期限に残せるという意味ではない。
移行先の .NET 10 LTS は2025年11月11日にリリース済みで、サポート終了は2028年11月14日。
移行先が出るのを待つ段階ではなく、期限の1年前からすでに使える状態にある。
サポート終了後もアプリはただちに止まらない。
止まるのは、セキュリティ修正、サービス更新、技術サポートの提供だ。
CVE(共通脆弱性識別子)が後から出た場合、対象ランタイムに修正が来ない状態になる。
なお11月10日は Patch Tuesday(Microsoftの月例更新日)と重なっていて、重大な問題があれば当日に最後の更新が1回出る可能性があると告知は書いている。
このブログでは4月に ASP.NET Core の権限昇格脆弱性 CVE-2026-40372を扱った。
あの件は .NET 10 側に混入した問題で、.NET 8 / 9 は影響なしだった。
11月10日を過ぎると立場が入れ替わり、次に脆弱性が出たとき修正が届くのはサポート内の .NET 10 側だけになる。
Microsoft 自身には .NET の有償延長サポートがない。
移行が間に合わない場合の受け皿は、HeroDevs の NES for .NET 8 のようなサードパーティの延長サポートになる。
10月13日は Windows Server 2012 ESU の最終日
Windows Server 2012 と 2012 R2 は、通常の延長サポートを2023年10月10日に終えている。
その後に残っていたのがESUで、Microsoft のWindows Server ESU概要には、Azure上でもオンプレミスでもESUの終了日が2026年10月13日と載っている。
ESUは新機能や通常の不具合修正ではなく、Critical(緊急)/ Important(重要)扱いのセキュリティ更新に絞った延命策だ。
Microsoft Learn も、ESU期間が終わると更新提供を止めると書いている。
つまり10月13日以降は、OS層の修正が来ない前提で残すか、移行するかの話になる。
Windows Server 2012 が残る理由は、OSそのものより上にいるアプリのことが多い。
古い .NET Framework アプリ、ベンダー更新が止まった業務アプリ、特定のドライバやハードウェア前提の構成が、OSの更新を止めている。
.NET Framework はモダン .NET と違って単独の年次LTSではなく、ホストしているWindows側のライフサイクルで決まる。
そのため、Windows Server 2012 の期限が、その上で動く古い .NET Framework アプリの期限を兼ねている場合がある。
Microsoft が示す選択肢は大きく2つだ。
オンプレミスで新しい Windows Server へ移行するか、Azure VM へ移してESUを追加費用なしで受ける。
ただしAzure退避は延命策で、アプリ側の更新不能な状態は残る。
オンプレミス移行のほうは、Windows Server 2025 から非クラスター構成のインプレースアップグレードが最大4バージョン先まで対応した。
2012 R2 から 2025 へ直接上げる例が、同じESU概要ページに載っている。
中間バージョンを挟んで多段で上げる段取りは、この構成なら組まなくていい。
期限は近いが移行対象が違う
2026年10〜11月の運用カレンダーには、この2本のほかにも期限が集中している。
Windows 10 のコンシューマー向けESUも当初は同じ10月13日終了だったが、2026年6月に2027年10月12日まで1年延長された。
2026年10〜11月にはPython 3.10やPostgreSQL 14なども期限を迎える。
Node.js でも、Node.js 26の記事で触れたように、古いラインはEOL(サポート終了)後にセキュリティ修正から外れる。
Microsoft の期限ものでは、Secure Boot 2023証明書の記事で扱った2026年6月のCA失効も同じ年だった。
一方で、作業の単位は別だ。
.NET 8 / 9 はプロジェクトファイルの TargetFramework、SDK、CI、ホスティング環境、依存パッケージの組み合わせを確認する。
Windows Server 2012 のほうは、OSに加えてHyper-VやVM基盤、Active Directoryやファイル共有の周辺、上に乗るアプリのベンダー対応まで確認範囲が広がっている。
.NET だけなら .NET 10 へ上げる検証で済むケースがある。
8 から 10 への破壊的変更は公式の互換性一覧にまとまっている。
Windows Server 2012 の場合は、アプリが新OSで動くか、インプレースアップグレードで済むか、Azure退避を挟むかまで分かれる。
管理表では .NET target と Windows Server host を分ける
まず .NET は、プロダクションで動いているランタイムとSDKを分けて確認する。
開発端末に .NET 10 SDK が入っていても、本番コンテナやVMが .NET 8 ランタイムのままなら期限に引っかかる。
Visual Studio 2022 についても、将来のサービス更新で .NET 8 / 9 コンポーネントがサポート外として扱われると Microsoft は書いている。
既存のインストールから消えるわけではなく、サポート外の印がついて任意で削除できる形になる。
Windows Server 2012 は、ホスト名や台数の一覧だけだとアプリ側の詰まりが残る。
どの業務アプリが乗っているか、認証や共有フォルダを使っているか、ベンダーが新OSをサポートしているかを、同じ行に書いておく。
ESUを買っていた環境なら、2026年10月13日以降の追加購入で解決する道は基本的にない。
2026年夏の時点の管理表では、.NET target と Windows Server host を別の列に分けておく。
同じ列にまとめた表は、ランタイム更新の行なのかOS移行の行なのかが、期限の日付でしか区別できない。