.NET 6 リリース概要まとめ

新規発表された.NET 6について簡略的には情報まとめです。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

概要

去年(2021)年末に、 .NET 6 が公式発表されました。

ただいままだ既存 .NET 5 の環境で行っているプロジェクトはほどんとかも知れませんが、早いうちに .NET 6 にしようと考えている方は少なくないと思うので、自分も .NET 6 を勉強しなければならないので、勉強メモとしてブログを書きたいと思います。

何で .NET 6?

.NET 5 は普通にうまく使えるのに、.NET 6 に移行する必要はありますか?という疑問を持ってる方がたくさんいると思います。

リリースノートやネットで調べたところは、 .NET 6 に移行することは推奨されるし、そして恐らく早い段階 .NET 6 に移行しなければならないようです。

理由は

  • .NET 52022年5月にサポート終了となり、これからの約三年は .NET 6 のLTS(Long Term Support)になります
  • 多く新規機能が追加され、性能は大幅にアップしてます
  • 各プラットフォームの開発は .NET 6 に統合されました

.NET 6 への移行方法

具体の参考リンク:
Migrate from ASP.NET Core 5.0 to 6.0

Migrate from ASP.NET Core 3.1 to 6.0

 

簡単でいうと、.NET 6.0 SDKをインストールした上、下記の環境で開発を行うこと

  • Visual Studio 2022 (Macの場合はVisual Studio 2022 for Mac)
  • Visual Studio CodeC# for Visual Studio Code (最新バージョン)

開発環境を整えてから

  • global.jsonにSDKのバージョンをアップする
  • .csproj(project file)にSDKのバージョンをアップする
  • .csproj(project file)でのパッケージ参照をアップする

それでプロジェクトのアップグレードができます。

.NET 6 アップデート概要まとめ

Performance (性能大幅アップ)

  • FileStreamでのI/Oスピードが大幅向上、信頼性がよくなってます
  • Profile-guided optimization(PGO)というコンパイル最適化が適用され、Dynamic PGODOTNET_TieredPGOという環境変数でオンすることが可能
  • Crossgen2が適用され、ahead-of-time (AOT、事前コンパイラ)でアプリの起動が早くなります。

Arm64 support

MacOS Arm64("Apple Silicon")とWindows Arm64システムが支援するようになりました

Hot Reload

コードを編集してから、アプリを再起動せずに変更されるものがアプリに反映されます。

.NET MAUI (統合されたUIフレームワーク)

正式リリースは年中予定されます。これから複数のプラットフォームのアプリUI開発は同じコードベースにすることが可能となります。

C# 10 と F# 6

C# 10F# 6も発表されました。文法的な特性などが追加されてます。

SDK Workloads

.NETのSDKは今後もコンポーネント化する方向で、SDKのサイズを軽減するようにしています(必要なものだけをインストールする)。

System.Text.Json APIs

Json処理を担っているライブラリは改善されました。

HTTP/3

プレビュー版ですが、QUICというプロトコルが追加され、独立性を持つ、より速い接続ができ、モバイルデバイスのネット環境を切り替えても中断されないようになってます。

OpenTelemetry

アプリの状態、性能などを監視できる機能が紹介されました。

Security

Open SSL3を支援することになって、そして二つセキュリティ鍵の妨害防止方法がプレビュー機能として追加されました。

IL trimming / Code analysis

余計なコード削除や、コードのリスク、最適化分析などの機能が追加されてます。

Windows Forms

Application.SetDefaultFont(Font)でデフォルトのフォントを指定できるようになりました。

Source build / Target framework monikers

ある協会が.NET SDKを含めて自分SDKをビルドでき、そして特定のプラットフォームにターゲットすることも可能になっています。

Generic Math

generic typeでオペレイターを使いたい、static methodを定義したい方に向ける数学的にな機能がプレビュー版として追加されました。

NuGet package validation

NuGetのパッケージ開発者に向けるパッケージ検査機能package-validation toolingが追加されました。

Reflection / Microsoft.Extensions / New LINQ APIs

Reflection、Microsoft.Extensions、LINQについて新規APIが追加されました。

Date, time, and time zone improvements

System.DateOnlySystem.TimeOnlyという構造体が追加され、時間表示などのAPIも改善されました。

PriorityQueue class

優先順位情報を保存しているコンテナが追加されました。

 
 

以上です。

 
 

参考リンク:

.NET and .NET Core Support Policy

What's new in .NET 6

Announcing .NET 6 — The Fastest .NET Yet

Performance Improvements in .NET 6

What's new in C# 10