Microsoft、.NET開発者向けホットリロードをプレビュー、.NET 6のリリース日を設定

Table of Contents

Microsoft、.NET開発者向けホットリロードをプレビュー、.NET 6のリリース日を設定

Build Microsoftは、.NET開発向けのホットリロード機能をプレビューしました。これにより、実行中のアプリケーションに適用されるソースコードへのオンザフライの変更が可能になります。また、.NET 6の最初の製品リリース日を11月9日と設定しました。

長年の Microsoft プラットフォーム開発者は、エディット コンティニュ (EnC) が .NET への移行で失われ、その後 Visual Studio 2005 で復活した当時の Visual Basic の機能であったことを覚えているでしょう。

ホット リロードは同じ機能ではありませんが、シニア プログラム マネージャの Dmitry Lyalin 氏によると、「ホット リロードは EnC によって実行されます」とのことです。

編集と継続では、ブレークポイントでコードを一時停止し、編集を行って再開する必要がありますが、ホット リロードでは一時停止は必要ありません。

Visual Studio 2019 16.11 プレビューで .NET 6.0 プレビューを使用してこの機能を試したところ、簡単な例で問題なく動作しました。変更されたコードが次に再実行される際にも機能し、アプリケーションは再読み込みされません。これは、バグ修正時やボタンクリック時に実行されるコードを試す時などに便利で、時間を節約できます。XAML ホットリロードは、XAML ベースのユーザーインターフェイスを即座に更新するための既存の機能です。

コード変更を適用ボタンをクリックすると、実行中のアプリケーションが一時停止することなく更新され、すべてが順調に進みます。

クリックして拡大

VS Codeユーザーは、dotnet watchというユーティリティを使ってホットリロードを試すこともできます。このユーティリティは数年前から存在しており、ソースファイルが変更されると.NET Coreコマンドを実行します。

ページが変更されたときにブラウザを更新したり、コードを再コンパイルしたり、テストを実行したりするために使用できます。dotnet watch ユーティリティは、起動設定ファイルを変更することで、ホットリロードをサポートするように設定できるようになりました。

まだ来ます

Lyalin氏は、.NET 6とVisual Studio 2022のリリースに向けて、さらに多くの機能を追加する予定だと述べた。将来的には、iOS、Android、Mac Catalystアプリケーション、RazorおよびBlazorアプリケーション、リリースモードで実行されるアプリケーション(現在はデバッグモードが必要)向けの.NETホットリロード、そして変更可能な内容に関する制限の緩和などが計画されている。現在、C#のサポートが最も充実しており、Visual Basicも一部サポートしているが、F#はまだサポートされていない。

今週開催中の仮想Buildイベントで、Microsoftは.NET 6 Preview 4も発表し、一般提供開始日を11月9日としました。.NET 6は、.NET Frameworkと.NET Core(実際には.NET Coreですが)の両方の後継となる統合.NETの初の長期サポート版であるため、大きなリリースとなります。プログラムマネージャのRichard Lander氏は、同社がgo-liveビルドと呼ぶものを使用して、8月から.NET 6の実稼働利用が可能になると述べました。.NET 6のサポート期間は3年間で、公式プラットフォームのリストはAndroid、iOS、Mac、Mac Catalyst(x64およびApple Silicon対応)、Windows Arm64にまで拡張されました。

Lander 氏は、パフォーマンスが高速化され、メモリ使用量が大幅に削減された書き換えられた FileStream を含む、プレビュー 4 の新機能について言及しました (Lander 氏は、メモリ割り当てが 39kB から 1kB に減少する例を示しました)。

また、イベント、パフォーマンス データ、カウンターの出力メカニズムである EventPipe のコードが C++ から C に移行されたと述べました。その理由は、同じコードで Mono ランタイムをサポートするためです。

.NET 6 プレビュー 4 の ASP.NET Core には、「最小限の API」と呼ばれる新機能が搭載されています。「これらの合理化された API は、ASP.NET MVC のメリットを、よりシンプルな操作で提供します」と、プリンシパル プログラム マネージャーの Daniel Roth 氏は述べています。

同氏によると、スケルトン API アプリは、1 つのファイル内の数行のコードで記述できるようになったという。

チームはC# 10の新機能も活用し、より簡潔なコードを実現しています。「開発者は、属性やその他の機能を犠牲にすることなく、クラスやメソッドからラムダ式へと移行できます」とロス氏は述べています。

新しいログ記録ミドルウェア、Entity Framework Core の最適化、シングルページ アプリケーション用の簡素化されたテンプレートもあります。

Blazor WebAssembly アプリケーションには重要な変更があり、WebAssembly で実装された .NET ランタイムで実行するのではなく、WebAssembly への直接コンパイルがサポートされるようになりました。

ロス氏は、パフォーマンスの向上は「かなり劇的になる可能性があります」と述べ、5倍高速化した例を挙げました。また、Webユーザーインターフェースを用いたクロスプラットフォームネイティブアプリケーションの構築手段として、Blazorコンポーネントを.NET MAUI(Multi-Platform App UI、Xamarin Formsの後継)アプリケーションでホストすることも可能になりました。

BlazorとElectronなどの代替手段との違いは、開発者がすべてをC#で記述できる点です。ただし、それがどの程度望ましいかは議論の余地があります。一部の.NET開発者はBlazorに非常に興味を持っていることが、その証拠です。

Blazor WebAssembly アプリは、Wasm .NET ランタイムで .NET 中間言語として実行されるのではなく、Wasm に直接コンパイルされるようになりました。

Blazor WebAssembly アプリは、Wasm .NET ランタイム上で .NET 中間言語として実行されるのではなく、Wasm に直接コンパイルされるようになりました。

MicrosoftはVisual Studio 2019もアップデートしました(Visual Studio 2022はまだリリースされていませんが、プレビュー版は夏にリリースされると約束されていました)。シニアプログラムマネージャーのジャスティン・ジョンソン氏によると、Visual Studio 2019 16.10(製品版)には、機能が完備したC++ 20コンパイラとSTLが搭載されています。

また、Git サポートの改善、新しい分析エンジンを使用した .NET パフォーマンス プロファイラーの改善、その他の調整も行われています。

最後に、Entity Framework Core チームは、次期バージョンの .NET 6 でパフォーマンスが向上したことを報告しました。EF Core ではクエリの実行が 31% 高速化され、その他の .NET 6.0 の改善と組み合わせると、バージョン 5.0 よりも 70% 高速化されます。

チームによると、この技術は、EF Core の代替として StackOverflow によって保守・使用されている、はるかに高速な Dapper からヒントを得たもので、いくつかのベンチマークではパフォーマンスの差を 5% まで縮めたという。

Microsoft は、広大な .NET プラットフォームを理解するために多大な努力を払っていますが、まだ混乱している部分があります。

ある開発者から、Xamarin は Windows 上の .NET と同じ基本クラスライブラリを使用するようになるのかと質問がありました。Lander 氏は「はい」と答えましたが、「答えは少し微妙です」と付け加えました。

彼は、Windows 上の .NET ではなく、より正確には Windows 上の .NET 6 クロスプラットフォーム ライブラリであると指摘し、「OS が何を可能にするかに応じて、iOS と Windows と Linux の特定の API の動作が常に異なる可能性がある」と述べました。

一度書けば、どこでもテストできます。®

Discover More