銀の光と碧い空

クラウドなインフラとC#なアプリ開発の狭間にいるエンジニアの日々

.NET 5 関連の新機能をまとめてみた

11月の.NET Confでリリースが予定されているされた .NET 5 関連の新機能をできるだけまとめてみました。ASP.NET CoreとEF Coreは除いています。

リリースにあわせていくつか更新しています。

そしてそんな .NET 5に興味のある方はぜひこちらのイベントにご参加ください。

csharp-tokyo.connpass.com

.NET 5 のダウンロード

dotnet.microsoft.com

hub.docker.com

.NET 5 のリリースモデル、ロードマップなど

  • リリースは、メジャー、マイナー、サービス更新の3種類から構成されます。
  • .NET 5が「Current」リリースで、1年後にリリース予定の.NET 6が「LTS」となる予定。その後、1年ごとに「Current」「LTS」を交互にリリース予定。
  • Currentは次のメジャーもしくはマイナーリリースがでて3か月、LTSのサポートは3年もしくは次のLTSが出てから1年の長いほう(つまり、最低3年間はサポート)。
  • サポートはマイクロソフトが提供するサポートおよびコミュニティによるサポートが提供されます。Red Hatなどが提供するもの(RHEL向け.NETなど)は別途サポートが提供される場合があります。
  • .NET Framework は4.8が最後のメジャーリリース。ただし、Windowsから削除する予定はなく、サポートとサービス提供は継続予定。

.NET 5のアップデート

  • C# 9とF# 5へアップデート
    • コンパイル時にコード生成を可能にするC# Source Generatorの導入
  • Target Framework (TFM)はクロスプラットフォームなものとOS固有のものを表すものの大きく2種類へ
  • .NETがAPIとして提供しているのに特定のOS(特にWindows)のみで動作するAPI(例えばRegistry.CurrentUser)に対して、使用を検出するアナライザーとコードフィクサーを提供する
  • さまざまなパフォーマンス改善
  • ARM64対応
  • 配布オプションの追加
    • ClickOnceでのクライアントアプリの展開
    • 単一の実行ファイルへの対応
    • コンテナイメージサイズの縮小とcgroup v2への対応
    • Server Coreイメージの追加
  • JsonSerializer の改善 JsonSerializer improvements in .NET 5 · Issue #41313 · dotnet/runtime · GitHub
  • null許容参照型のアノテーション導入の官僚 Annotate remainder of .NET Core assemblies for nullable reference types · Issue #2339 · dotnet/runtime · GitHub
  • .NET5の一部としてWinRT APIをサポート
  • ネイティブコード運用の改善
  • IEEE 754のbinary16 に対応する数値型としてHalf typeの導入
  • self-contained(自己完結型)アプリケーションの配布サイズを小さくするための アプリケーショントリミングの導入
  • アプリケーションコードの潜在的なバグを見つける分析機能を.NET SDKにデフォルトで導入
  • オブザーバビリティ(OpenTelemetry)やマイクロサービス(Tye)対応への取り組みを進める

破壊的変更については以下のドキュメントでまとめられています。

docs.microsoft.com

参考資料

devblogs.microsoft.com

devblogs.microsoft.com

devblogs.microsoft.com

devblogs.microsoft.com

devblogs.microsoft.com

devblogs.microsoft.com

devblogs.microsoft.com

devblogs.microsoft.com

devblogs.microsoft.com

devblogs.microsoft.com

blogs.windows.com

devblogs.microsoft.com

devblogs.microsoft.com

devblogs.microsoft.com

devblogs.microsoft.com