Skip to content

MS_MigrationToDotNet8

nishi_74322014 edited this page Aug 21, 2026 · 1 revision

.NET 8への移行

概要

.NET 8(.NET として最初の長期サポート(LTS)版)が
リリースされたので、下に移行情報をサマリしてみた。

移行メモ(正誤): 「.NET として最初の長期サポート(LTS)版」は正しくない。
.NET という名称になって最初の LTS は .NET 6(2021 年)であり、
.NET 8 は 2 番目の LTS にあたる。
(.NET Core まで含めれば .NET Core 3.1 が最初の LTS)

.NET 5 以降は**偶数版が LTS(3 年)、奇数版が STS(18 か月)**の
交互リリースになっている。詳細は .NET 10への移行 を参照。

詳細

  • .NET 5 - 7 からなら比較的軽いマイグレーション。

  • .NET Framework 4.x からなら、プロジェクト変換と API 非互換対応が中心。

  • BinaryFormatter が(非推奨(.NET 5)→ サポート終了(.NET 7)→)ドロップ(.NET 8)に。

補足(BinaryFormatter が消えた理由): BinaryFormatter
任意の型を復元できてしまうため、
信頼できないデータを渡すと任意コード実行に繋がる(デシリアライズ攻撃)。
この危険性は設計上回避できないと判断され、段階的に廃止された。

.NET 5   非推奨(警告)
.NET 7   ASP.NET Core 等で既定無効
.NET 8   実装がスローする(互換パッケージで一時回避のみ可)
.NET 9   互換パッケージも削除

移行先は用途によって分かれる。

用途 代替
一般的なデータ交換 System.Text.Json
高速なバイナリ MessagePack、protobuf-net
.NET 独自型の保存 DataContractSerializer(型を明示)

実務では ASP.NET のセッション状態や ViewState、
リモート キャッシュ
に潜んでいることが多く、
移行時に最初に洗い出すべき項目である。

  • サポート範囲を、.NET Fx 4.8、.NET 8 に絞るモダナイゼーション・チャンスではある。

    • ここのところ、Visual Studio が VSC と 2022 で止まっているためテンプレート数を減らせる。
    • .NET Framework 4.8 以前のモノがサポート切れ or 切れ間近なので、.NET Framework 4.8 に集約できる。
    • .NET Standard 2.0.NET Standard 2.1
      重要性の低下&非推奨の流れがある。
  • .NET Framework 4.8.x は、実質、SI 向け .NET として、今後も使われ続ける可能性が高い。

    • 既存資産・レガシーシステムの圧倒的な蓄積
    • Windows 固有機能(Windows 認証、AD、COM、GDI+、WinForms/WPF)に強依存
    • Microsoft が(マイナーバージョンアップのみだが)継続サポートの方針

    ※ WinForms/WPF は、新ランタイム上での挙動が微妙に異なる場合があり、
      ライブラリに商用サポートがないケースも。

  • NuGet パッケージ(OSS)が

    • .NET Standard 2.1(非推奨)から、.NET 6 - 8 対応版 に更新されているか確認。
    • モノに依っては、.NET Framework、.NET Standard 2.0/2.1 などが更新されていない場合も

補足(.NET Standard の位置づけの変化): 原文が言う
「.NET Standard の重要性の低下」は、次の事情による。

【かつて】.NET Framework と .NET Core が並存
          → 両方から使えるライブラリを作るために .NET Standard が必要だった

【現在】.NET 系に一本化が進んだ
         → 単に net8.0 を対象にすれば済む
         → .NET Framework も対象にしたい場合だけ netstandard2.0

netstandard2.1 は特に中途半端である。
.NET Framework が対応していない(4.8 は netstandard2.0 まで)ため、
「.NET Framework も対象にする」という唯一の存在理由を満たさない
現在の指針は、

対象 TFM
.NET 系のみ net8.0(または net10.0
.NET Framework も含めたい netstandard2.0
上記の両立 <TargetFrameworks>netstandard2.0;net8.0</TargetFrameworks>

netstandard2.1 を新規に選ぶ場面はほぼ無い。

補足(この節の主張の妥当性): 「.NET Fx 4.8 と .NET 8 の
2 本に絞るモダナイゼーション・チャンス」という見立ては実践的である。

中間バージョン(.NET Framework 4.5〜4.7、.NET Core 2.x/3.x、.NET 5/7)は
いずれもサポートが切れているため、
「どうせ何か対応が要る」タイミングで選択肢を 2 つに畳むという判断になる。

なお .NET 8 は 2026 年 11 月にサポート終了するため、
現時点で新たに集約するなら **.NET 10(LTS)**が対象になる。

参考

Microsoft Learn

OSSC

  • 部会メモ(2025年) - Open 棟梁 Wiki > 4-6月 セルフ&オフライン部会(第42-44回)(OTR_MeetingMemo2025.md

Tags: 移行, .NET開発, .NET Core

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally