Hands On Microsoft は、開発者が Windows Subsystem for Linux 2 (WSL 2) 上で .NET Core アプリケーションを実行およびデバッグできるようにする Visual Studio 2019 の拡張機能をリリースしました。
このプレリリース拡張機能は、.NET Core開発者にとって現在一般的なパターンとなっている、WindowsでWebアプリケーションやマイクロサービスを作成・編集し、Linuxにデプロイすることで、より多くのデプロイオプションとライセンスコストの削減を実現するという状況に対応しています。また、パフォーマンスも向上する可能性があります。
2017 年後半に開発者 Roberto Prevato 氏が行ったテストでは、同じアプリケーションが Linux 上で大幅に優れたパフォーマンスを発揮することが判明しました。
.NET Core が Linux 上で問題なく動作するというさらなる証拠は、Adtech 企業の Criteo から得られています。同社は次のように報告しています。「サーバーを最も多く消費するアプリの 1 つを Windows から移行しました。Linux/Mesos/Marathon 上の .Net Core で実行しています。5,300 Mesos インスタンス、159,000 仮想コア、320 TB RAM で、毎秒 400 万ユーザーに対して 5 億 3,200 万のキャンペーンを評価しています。平均 10 ミリ秒未満です。」
クリックして拡大
この新しいオプションは、Linux に展開する前に Windows 側ですべてのデバッグを実行して同じように動作することを期待するのと比べて、Microsoft が「より忠実度の高いローカル デバッグ エクスペリエンス」と呼ぶものを提供します。
前提条件は、Windows 10とWSL 2(UbuntuまたはDebianがインストールされたもの)、そしてVisual Studio 2019(無料のCommunityエディションで十分です)です。この拡張機能は、Microsoftが5月に開催したバーチャルBuildイベントでプレビューされましたが、現在ダウンロード可能です。
試してみました。この拡張機能はよくできているようです。インストールすると、デバッグセッションを開始するためのドロップダウンメニューに「WSL 2」オプションが表示され、選択すると「リモート」Linuxオペレーティングシステムに.NET Core 3.1をインストールするように求められます。その後、必要なファイルが自動的に展開されます。
.NET Core SDK は Linux 側にインストールされますが、アプリケーションのソース コードは Windows ファイル システムに残り、/mnt/[driveletter] パスを介してアクセスされます。
.NET Core Web アプリケーションは初めて動作しましたが、/mnt/c/Users/[username] からファイルをロードすることに関するデバッグ ウィンドウのメッセージ以外には、WSL 2 で実行されていることを示すものはほとんどありませんでした。
ブレークポイントはヒットし、コードをステップ実行でき、すべて正常に動作します。.NET Core React.jsアプリケーションでは残念ながらうまく動作せず、権限エラー(node_modules/.bin/rimraf: node: Permission denied)が発生しました。ただし、これはプレリリース版です。
どれくらい便利ですか?
Microsoftは、Linux上で.NET Coreアプリケーションをデバッグするための様々な方法を提供しています。一つは、Linux上で動作するVisual Studio Codeを使用する方法です。これは非常にうまく動作し、JavaScriptのデバッグにはVisual Studioよりも優れた環境と言えるでしょう。もう一つは、Windows上でVisual Studioを実行し、Linux Dockerコンテナにデプロイする方法です。この方法は、デバッグサポートが既に提供されており、既に動作しています。
もう一つの選択肢は、Visual Studio Code のリモート処理を使用することです。これにより、Windows 側でエディターとデバッグを実行しながら、Linux 側でコンパイルと実行を行うことができます。これは新しい Visual Studio 拡張機能の動作と似ていますが、セットアップに手間がかかります。ただし、新しい拡張機能とは異なり、VS Code のリモート開発は WSL 2 だけでなく、リモート Linux サーバーでも動作します。
.NET Core アプリケーションが Linux でも Windows でも同じように実行されることを確認するのが目的なので、Visual Studio テスト ランナーが WSL 2 環境でテストを実行できれば便利ですが、これはサポートされていません。
いくつかの問題はありますが、これは Microsoft による Windows 上での Linux 開発のサポート改善の一環です。®