Microsoft は .NET 5.0 の最新プレビューを公開し、11 月の一般提供開始に先立ち機能が完備していると発表した。
これは、すべての .NET アプリケーション (以前は .NET Framework を必要としていたものも含む) のための統合プラットフォームとなることを約束する大きなリリースです。
.NET 5.0 では、Windows Forms または Windows Presentation Foundation (WPF) で構築されたデスクトップ Windows アプリケーションを、これまで .NET Core と呼ばれていたクロスプラットフォーム版の .NET でコーディングできるようになります。ただし、これらのフレームワークは Windows 専用です。その他の変更点としては、単一ファイルアプリケーション、ARM64 上の Windows のサポート、WebAssembly ターゲットのサポート(ただし、Mono ランタイムは引き続き使用)、C# 9.0 および F# 5.0 の導入、ASP.NET Core および Entity Framework Core の新バージョン、パフォーマンスの向上などが挙げられます。
プログラムマネージャーのリチャード・ランダー氏によると、次のステップは11月の正式リリース前に2つのリリース候補版を公開することです。ただし、.NET 5.0は長期サポート(LTS)リリースではありません。その点で、最も重要なのは2021年11月に予定されている.NET 6.0です。Microsoftは.NET LTSを2年ごとにアップデートする予定です。
.NET 5.0 SDKには、新しいデスクトップランタイムとASP.NET Core 5.0、C# 9、F# 5が付属しています。そしてもちろん、デフォルトでオンになっているテレメトリも含まれています。
いくつかの問題点と妥協点があります。.NET と WinRT(最新の Windows 10 API で使用されるランタイム)の相互運用方法が変更されたため、これらの API を使用する既存のアプリは、再構築しないと .NET 5.0 で実行できなくなります。Windows デスクトップ アプリケーションのサポートは ARM64 には拡張されませんが、後日サービス アップデートで提供される予定です。ネットワーク上でデスクトップ アプリケーションを展開するために使用される ClickOnce のサポートは .NET 5.0 で計画されていますが、今回のプレビューには含まれていません。
C# 9.0 には、トップレベルプログラム(メインメソッドが不要で、初心者でも簡単に Hello World を記述できます)、レコード型、ターゲット型 など、多数の新機能がnew
追加されました。ターゲット型 は、入力処理を削減するための の代替手段ですvar
。 を使用するとvar
変数の型はその値から推論されますが、ターゲット型 ではnew
作成する型を推論します。
リスト<int> mylist = new();
の代わりに:
var mylist = 新しいリスト<int>();
新機能の全リストはこちらです。すべての新機能には根拠がありますが、Microsoft が言語に過剰な機能を追加したと批判する声もあります。
「私が求めているのは、構文を増やすことではなく、構文を減らすことです。C#はすでに非常に広範囲にわたるため、C++のように、開発者がすべてのコードを理解できなくなる段階に到達するでしょう。それは良くありません」と、.NETのベテランであるFrans Bouma氏はTwitterで述べた。
シングルファイルアプリケーションは主にLinux向けで、実行ファイルに静的にリンクされた.NETランタイムが含まれています。ランダー氏によると、Microsoftは現在Windowsでは「様々なオペレーティングシステムの制約により」これを実行できないとのことですが、.NETランタイムをアプリケーションと同じファイルにパッケージ化し、実行時に一時ディレクトリに展開するという代替手段があります。
ランダー氏は、単一ファイルアプリケーションがネイティブコードコンパイルの要件を満たしているかどうかについても言及しました。「AOT(Ahead of Time)はスペクトラムです」と彼は述べました。単一ファイルアプリケーションは事前にマシンコードを生成することはできますが、すべてがマシンコードにコンパイルされるわけではないため、「ネイティブAOT」には該当しません。.NET 6.0では、ネイティブAOTへの期待はまだ残っています。
ASP.NET Core が更新され、Office 365 で使用されるクラウドディレクトリである Azure Active Directory との完全な統合が Microsoft.Identity.Web ライブラリを介して実現されました。また、Blazor WebAssembly (WebAssembly にコンパイルされた .NET としてデプロイされるシングルページ Web アプリケーション) 向けの更新も行われています。ASP.NET のテンプレートシステムである Razor にも更新が加えられ、C# 9.0 を適切にサポートするようになりました。
公式の .NET オブジェクト データベース マッパーである Entity Framework (EF) Core も更新され、SQLite のサポートが強化され、その他の機能も改善されています。
Visual Studio 2019 プレビューのプロジェクトの種類には、.NET Core デスクトップ アプリケーションが含まれます。
.NET アップデートには、次期バージョンである Visual Studio 2019 16.8 の新しいプレビューが付属しています。複数の Visual Studio ソリューションを含む Git リポジトリがユーザーインターフェイスで完全にサポートされるようになり、新しい「基底クラスの抽出」リファクタリングやその他いくつかの調整が加えられています。
Microsoftの.NET 5.0は、.NETをWindows専用の.NET Frameworkとクロスプラットフォームの.NET Coreに分割した際に生じた問題を解決するための、壮大な取り組みです。.NET 5.0は優れたプラットフォームですが、.NETテクノロジーの拡散を統一されたフレームワーク群にまとめ上げる作業は、依然として進行中です。®