-
Notifications
You must be signed in to change notification settings - Fork 0
MS_MigrationToDotNet5
- 戻る(移行・マイグレーション > 各種、技術毎の移行性 > .NETのクロスプラットフォーム対応、.NET 5)
- .NET Coreへの移行
- .NET 5への移行
- .NET 6への移行
- .NET 8への移行
.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という接頭辞が消えたのが最大の表記上の変化である。
以下については、対策が必要。
補足(これが最大の非互換): .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 側で読み出して新形式に変換する
という工程が別途必要になる。
- 以下のような対応が必要だった。
- 参考
- Exception is occurred on the Visual Studio Designer.
· Issue #391 · OpenTouryoProject/OpenTouryo
https://github.com/OpenTouryoProject/OpenTouryo/issues/391
- Exception is occurred on the Visual Studio Designer.
補足(デザイナ問題は解消済み): Windows Formsの
デザイナは、.NET Core / .NET 5 世代では別プロセスで動作する新実装に
置き換えられた過渡期があり、
カスタム コントロールが読み込めない等の不具合が多発した。
時期 状況 .NET Core 3.x デザイナがプレビュー。不安定 .NET 5 改善するが、サードパーティ コントロールで問題が残る VS 2022 / .NET 6 以降 概ね安定。 .NET Framework版と同等に使える現在から .NET 8 へ移行する場合、
この項目は障害にならないと考えてよい。
- 対象フレームワークの表記(TFM)の変更
-
netcoreapp→net5.0系への読み替え
補足(今から移行するなら .NET 5 は経由しない): .NET 5は
STS(18か月サポート)で、2022年5月にサポート終了済みである。
したがって本ページの手順は、
- .NET Core 3.1 → .NET 8(LTS)へ直接移行する際の参考
として読むのが実務的である。
途中バージョンを踏む必要はなく、破壊的変更のドキュメントも
バージョン範囲を指定してまとめて確認できる。
-
.NET 5 での破壊的変更
https://learn.microsoft.com/dotnet/core/compatibility/5.0 -
BinaryFormatter のシリアル化メソッドが使用できない
https://learn.microsoft.com/dotnet/core/compatibility/core-libraries/5.0/binaryformatter-serialization-obsolete -
BinaryFormatter セキュリティ ガイド
https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide
-
そう言えば、.NET 5 がアナウンスされていましたね。
https://www.osscons.jp/jo74jm34c-537/ -
第14回 部会 Open棟梁の機能のデモを.NET 5でやってみる。
https://www.osscons.jp/jof8hchcy-537/ -
Open棟梁 v1.0系 の新規採用、マイグレーションの案内(第二版)
https://www.osscons.jp/jom1z8jge-537/
Tags: 移行, .NET開発, .NET Core
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。