-
Notifications
You must be signed in to change notification settings - Fork 0
MS_MigrationToDotNet8
- 戻る
- 移行・マイグレーション > 各種、技術毎の移行性 > .NETのクロスプラットフォーム対応
-
.NET Core > .NET 5 > .NET 6 > .NET 8 > .NET 10
- .NET Coreへの移行
- .NET 5への移行
- .NET 6への移行
- .NET 8への移行
- .NET 10への移行
.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)**が対象になる。
- .NET 8 での破壊的変更
https://learn.microsoft.com/ja-jp/dotnet/core/compatibility/8.0 - BinaryFormatter の移行ガイド
https://learn.microsoft.com/ja-jp/dotnet/standard/serialization/binaryformatter-migration-guide/
- 部会メモ(2025年) - Open 棟梁 Wiki > 4-6月 セルフ&オフライン部会(第42-44回)(
OTR_MeetingMemo2025.md)
Tags: 移行, .NET開発, .NET Core
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。