Skip to content

MS_MigrationToDotNet6

nishi_74322014 edited this page Aug 21, 2026 · 1 revision

.NET 6への移行

概要

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

補足: 「.NET として最初の LTS 版」は
.NET 6 については正しい.NET Core から .NET へ改称された系列で最初の LTS)。
同じ文が .NET 8への移行
.NET 10への移行 にも書かれているが、
そちらは当てはまらないため、各ページで訂正している。

詳細

# 対象 評価 備考
1 Console 非常に高い app.config の appsettings.json 化と、その初期化コードを足す程度で移行作業が完了した。
2 Windows Forms 非常に高い ただし、UI コンポーネント等に互換性があることが前提となる。
3 WPF 非常に高い ただし、UI コンポーネント等に互換性があることが前提となる。
4 ASP.NET Web Forms Core 版は存在せず。
5 ASP.NET Core MVC 中程度 Console と同様の変更に加え、「脱 System.Web による API 変更」、「新しい DI による構成方法の変更」、「要求処理パイプラインの変更」、「認証周りの API の変更」など、技術的な難易度は少々高いが、コード変更(ポーティング)の手数はそれほど多くならない。
6 ASP.NET Core WebAPI 高い 技術的には、CORS の構成方法が異なっている以外、前述の MVC と大差はないが、WebAPI は MVC と比べて UI レイヤ ≒ API の I/F 変更の多いフレームワーク レイヤが薄いので、移行の難易度は MVC ほど高くない。また、WebApiCompatShim を使用すると .NET Framework と同じスタイルでインターフェイスを記述できるので移行性は更に高まる。
7 ASP.NET Core SPA(ASP.NET Core SPAテンプレート 対象外 非推奨(Visual Studio + React のスタックの情報より、任意エディタ + CLI ツールのスタックの情報の方がインターネット上の情報が多数ある。)

移行メモ(原文の表について): 原文はセル結合(~)で
「非常に高い」「ただし、UI コンポーネント等に…」を 2〜3 行にまたがらせていたが、
GitHub Wiki の表はセル結合に対応しないため、同じ値を展開した。

補足(この評価表が示すもの): 移行の難易度が
**「Windows 固有の基盤にどれだけ依存しているか」**で決まる、
という構図が読み取れる。

【易しい】Console / WinForms / WPF
           → ランタイムを差し替えるだけ。UI は Windows のまま

【中程度】ASP.NET Core MVC / WebAPI
           → System.Web(IIS 前提の基盤)から離れる必要がある

【不可】  ASP.NET Web Forms
           → 移行先が存在しない

System.Web からの脱却が Web 系の移行の本体である。
HttpContext.CurrentServer.MapPathSessionViewState といった
どこからでも触れるグローバルな仕組みが、
ASP.NET Core では DI で明示的に注入する形に変わっている。
このため「手数は多くないが、考え方の変更が要る」という
原文の評価になる。

補足(WebApiCompatShim について): 現在は
提供されていない(ASP.NET Core 3.0 で廃止)。
ApiController 互換のスタイルで書けた移行支援パッケージだったが、
現在は素直に ASP.NET Core のコントローラーへ書き換えることになる。

補足(Web Forms の移行先): 原文が「Core 版は存在せず」と
切り捨てているとおり、ASP.NET Web Forms に直接の移行先は無い
現実的な選択肢は次のいずれかになる。

方針 内容
残す .NET Framework 4.8 のまま維持(.NET Framework 参照)
Blazor へ イベント駆動・コンポーネント指向という点で発想が近い
MVC / Razor Pages へ Web の標準的な作りに寄せる(実質作り直し)
SPA + WebAPI へ フロントを分離する(最も大きな変更)

Blazor Server は「サーバー側でイベントを処理し、
差分だけを画面に反映する」という点が Web Forms のポストバックに似ており、
移行先として案内されることが多い。
ただし ViewState や Web Forms のコントロールがそのまま使えるわけではなく、
UI は作り直しになる点は変わらない。

参考

Microsoft Learn

OSSC

Blog

当該 Wiki

開発基盤部会 Wiki

  • .NET Core on Linux(DNET_DotNetCoreOnLinux.md
    • .NET Core on Linuxのポイント(DNET_DotNetCoreOnLinux.md
    • .NET Coreのインストールとデプロイ(DNET_DotNetCoreInstallDeploy.md
    • ASP.NET Coreのインストールとデプロイ(DNET_ASPNETCoreInstallDeploy.md
      • nginxでASP.NET Coreをホストする(DNET_nginx.md

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

NetDevInfraWiki

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

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally