Skip to content

MS_MigrationToDotNet5

nishi_74322014 edited this page Aug 21, 2026 · 2 revisions

.NET 5への移行

概要

.NET Core 3.0 ~ .NET Core 3.1 からは、ほぼストレート・コンバージョン。

補足(実際の作業はほぼ 1 行): .NET Core 3.1 → .NET 5は、
.csproj の TFM を書き換えるだけで済むことが多い。

<TargetFramework>netcoreapp3.1</TargetFramework>   ← 旧
<TargetFramework>net5.0</TargetFramework>          ← 新

Windows 専用機能(Windows Forms / WPF /
COM)を使う場合は net5.0-windows とする。
netcoreapp という接頭辞が消えたのが最大の表記上の変化である。

詳細

以下については、対策が必要。

BinaryFormatter

.NET の Serializeの件。

補足(これが最大の非互換): .NET 5
BinaryFormatter は既定で無効になった
(使うと NotSupportedException)。
一時的に戻すことはできたが、あくまで移行猶予のための措置であった。

バージョン 状態
.NET Core 3.1 まで 使える
.NET 5 既定で無効EnableUnsafeBinaryFormatterSerialization で一時的に復帰可)
.NET 8 復帰スイッチも削除
.NET 9 アセンブリごと削除

無効化の理由はセキュリティである。
BinaryFormatter は型情報を含むデータをそのまま復元するため、
細工されたデータで任意コード実行が成立する
(デシリアライズ脆弱性)。設定で塞げる類の問題ではない。

移行先は次のいずれか。

用途 代替
一般的なデータ交換 System.Text.Json(標準・高速)
高速・小サイズが要る MessagePack for C# / protobuf-net
既存 XML 資産がある XmlSerializer / DataContractSerializer(現役)

既に永続化されたバイナリ データがある場合は、
移行前に .NET Framework 側で読み出して新形式に変換する
という工程が別途必要になる。

VSデザイナの問題

Visual Studioデザイナの問題

補足(デザイナ問題は解消済み): Windows Forms
デザイナは、.NET Core / .NET 5 世代では別プロセスで動作する新実装
置き換えられた過渡期があり、
カスタム コントロールが読み込めない等の不具合が多発した。

時期 状況
.NET Core 3.x デザイナがプレビュー。不安定
.NET 5 改善するが、サードパーティ コントロールで問題が残る
VS 2022 / .NET 6 以降 概ね安定.NET Framework 版と同等に使える

現在から .NET 8 へ移行する場合、
この項目は障害にならないと考えてよい。

その他

  • 対象フレームワークの表記(TFM)の変更
  • netcoreappnet5.0 系への読み替え

補足(今から移行するなら .NET 5 は経由しない): .NET 5
STS(18か月サポート)で、2022年5月にサポート終了済みである。
したがって本ページの手順は、

  • .NET Core 3.1 → .NET 8(LTS)へ直接移行する際の参考

として読むのが実務的である。
途中バージョンを踏む必要はなく、破壊的変更のドキュメントも
バージョン範囲を指定してまとめて確認できる。

参考

Microsoft Learn

OSSコンソーシアム(開発基盤部会 Blog)


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

NetDevInfraWiki

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

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally