目次
はじめに
あるプロジェクト(画面数:80くらい)のシステムがC# .NET6で構築していたのですが、.NET8がリリースされましたのでシステムのバージョンアップを行いました。
.NETのサポートポリシー
.NET6 .NET8 はLTS(Long Term Support)
.NET7はSTS(Short Term Support)
.NET6
リリース日:2021/11/08
サポート終了日:2024/11/12
.NET8
リリース日:2023/11/14
サポート終了日:2026/11/10
バージョンアップする方法としては以下の2つの方法があるのですが、.NET7のサポート終了日2024/05/14のため.NET7がリリースされてすぐに対応をしていれば①ができますが、それ以外の場合は②を取るしかありません。
①.NET6 → .NET7 → .NET8
②.NET6 → .NET8
影響調査する方法
.NET7、.NET8の変更点で影響がある個所はマイクロソフトのページがあります。
ここに詳しくどのクラスがどのように変わるか書いているのでシステムへの影響があるかないか調査できます。
参考:.NET7の破壊的な変更
参考:.NET8の破壊的な変更
私が担当していたシステムは、今までSystem.Data.SqlClientを使用していたのだが、上記の.NET7の破壊的な変更の「古いフレームワークのライブラリサポート」に該当したのでMicrosoft.Data.SqlClientに変更することにしました。
System.Data.SqlClientは、今後サポートはあるが新機能追加はなく、新機能はMicrosoft.Data.SqlClientに追加されるとのことで変更することにした。
ただMicrosoft.Data.SqlClientに変更することによりSQL接続でデフォルト設定がEncrypt=FalseからEncrypt=Trueになったため、SQLServerのサーバー証明書をクライアントで信頼する証明書に登録する必要がありました。
それ以外の点では、静的コード解析のStyleCopを導入していたが何か所か新たにNULLに関する警告がでるようになったのでソースの修正が必要でした。
上記2点以外は大きくソースを修正することなく.NET8の環境でも動作しました。
参考:StyleCop
おわりに
今回は、.NETのサポートポリシーを紹介し、.NET6から.NET8にバージョンアップを行ったときにどのように対応したかを記載しました。
2年後には.NET10へのバージョンアップが待っていますのでその時にこの記事を思い出して対応したいと思います。