2022-05-26: .NET MAUI GA, Visual Studio 2022 for Mac

Published on Thursday, 26 May 2022

トピックス

Introducing .NET MAUI - One Codebase, Many Platforms

https://devblogs.microsoft.com/dotnet/introducing-dotnet-maui-one-codebase-many-platforms/

クロスプラットフォーム開発フレームワークの .NET MAUI が一般提供となった。

現時点では開発ツーリングとして Visual Studio 2022 の Preview が必要となる (ツーリングの GA は今年の後半予定)。

記事ではネイティブ UI の各種対応(アクセシビリティやクロスプラットフォームな操作、カスタマイズなど)、モダンな開発者プロダクティビティ (新しいテンプレートやプロジェクト構成)、Blazor Hybird、パフォーマンスの最適化といったものを紹介している。

Visual Studio 2022 for Mac is now available

https://devblogs.microsoft.com/visualstudio/visual-studio-2022-for-mac-is-now-available/

Visual Studio 2022 for Mac v17.0 がリリースされた。

Visual Studio 2022 for Mac 17.0 では. NET 6 での開発サポートをはじめ、IDE の macOS ネイティブ UI 化や Apple SIlicon (ARM64) ネイティブでの動作の対応が行われている。

また、同時に Preview 版となる 17.3 もリリースされ、.NET 7 プレビューと GA となった .NET MAUI 開発がサポートされている。

Create Next Generation Experiences at Scale with Windows - Windows Developer Blog

https://blogs.windows.com/windowsdeveloper/2022/05/24/create-next-generation-experiences-at-scale-with-windows/

Build 2022 での Windows 向けの開発についてのアナウンス。

WinUI 3 プラットフォームをベースとした Windows App SDK 1.1 のプレビュー版の提供や新しい API、Template Studio for WinUI と移行ツールの更新、.NET MAUI のリリースなど。

その他、Microsoft Store では Win32 アプリケーションの配布に待ちリストへの登録が不要になったことや、ARM デバイスの開発を進めるための開発向けデバイスの Project Volterra や Visual Studio の ARM 版の提供予定などが発表されている。

gRPC support on Azure App Service

https://azure.github.io/AppService/2022/05/23/gRPC-support-on-App-Service.html

Azure App Service for Linux にて .NET Core 3.1 と .NET 6 で gRPC のサポートがプライベートプレビューの Early Updates Access Program で提供開始のアナウンス。

Introducing the private preview of port tunneling in Visual Studio for ASP.NET Core projects

https://devblogs.microsoft.com/visualstudio/introducing-private-preview-port-tunneling-visual-studio-for-asp-net-core-projects/

Visual Studio 2022 17.3 Preview 1.1 で ASP.NET Core の Web プロジェクトへのポートトンネリング機能 (プレビュー) が追加されたことについてのアナウンス。

これはコールバックや Webhooks 、Power Platform のような外部からアクセスする必要があるアプリケーションを開発する際にインターネット側からアクセス可能にするトンネルを提供するものとなる。(類似のものでよく知られているものとしては ngrok がある)

プライベートプレビューにサインインし、Preview 版でプレビュー機能を有効にし、launchSettings.json で指定することで Visual Studio からシームレスにトンネルを作成できるとのこと。

Uno Platform 4.3 - Figma Plugin, Uno Extensions, Material Design 3 Support, New Sample App and more

https://platform.uno/blog/uno-platform-4-3-figma-plugin-uno-extensions-material-design-3-support-new-sample-app-and-more/

Uno Platform 4.3 がリリースされた。

このリリースでは Figma プラグインと Material Design 3 テーマサポート、Uno Extensions、.NET 6 モバイル RTM のサポートなどが行われている。

The journey of moving from C++/WinRT to C# in the Microsoft Store

https://devblogs.microsoft.com/ifdef-windows/the-journey-of-moving-from-cpp-winrt-to-csharp-in-the-microsoft-store/

Microsoft Store アプリケーションを C++/WinRT から C# へと移行したことについての記事。

Microsoft Store アプリケーションは HoloLens や Surface Hub をターゲットとしている都合 UWP アプリケーションであり .NET Native (特殊な AOT) でビルドされているという事情があることで、パッケージマネージャーの WinRT API との相互運用にいくつかのハードルがありそれを乗り越える必要があったことが説明されている。

The Stack Overflow journey to .NET 6

https://www.wouterdekort.com/2022/05/25/the-stackoverflow-journey-to-dotnet6/

Stack Overflow が .NET 5 から .NET 6 へ移行したことについての記事。

3つの製品の共通コードベースがあること、本番環境へのデプロイまでの流れ、EF Core 2.2 から Entity Framework 5 へのアップグレード、.NET 6 への移行で発生した問題の対応、コネクションプールの問題(のように見えたもの)、移行の結果について書かれている。

アーティクル、スライドなど

Provide default configuration to your .NET applications

https://www.twilio.com/blog/provide-default-configuration-to-dotnet-applications

Microsoft.Extensions.Configuration を使って、.NET アプリケーションの設定にデフォルト値を持たせる方法についての記事。

Temporary breakpoint – New feature in Visual Studio 2022

https://www.talkingdotnet.com/temporary-breakpoint-new-feature-in-visual-studio-2022/

一度だけブレークして消える、一時的なブレークポイント (Temporary Breakpoint) の紹介記事。

ASP.NET Core MVC で 1 ページに複数個のフォームを置きたい

https://zenn.dev/okazuki/articles/how-to-add-multiple-form-on-one-page

ASP.NET Core MVC のビューに複数のフォームを配置し、それぞれで送信とバリデーションを行いつつ、両方のデータを保持する方法についての記事。

ASP.NET でのパスワード格納

https://zenn.dev/masakura/articles/6ef107ad173f39

ASP.NET/ASP.NET Core 標準のユーザーパスワード格納時のハッシュ化処理で、アルゴリズムやストレッチングなどどのような手法がとられているかについての記事。

Investigating the performance benefits of EF Core 6.0 compiled models feature

https://dev.to/audaciasoftware/investigating-the-performance-benefits-of-ef-core-60-compiled-models-feature-1i1e

Entity Framework Core 6.0 のコンパイル済みモデルによる起動パフォーマンス向上についての記事。

実際にプロジェクトで試してみたところ初回のインスタンス作成時間が4倍程度短縮されたとのこと。

Direct2DでSVGファイルを画像化する

https://zenn.dev/udaken/articles/svg-rendering-with-direct2d

P/Invoke で Direct2D を呼び出し、SVG のサブセットを描画する方法についての記事。

[Breaking change]: ActionResult<T> set StatusCode to 200 · Issue #485 · aspnet/Announcements

https://github.com/aspnet/Announcements/issues/485

.NET 6 以前の ASP.NET Core では ActionResult<T> を返した場合、 Response.StatusCode が尊重されていたが常に 200 が返るようになったという破壊的変更のアナウンス。

macOS Environment Setup For MAUI Development | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2022/05/25/macos-environment-setup-for-maui-development/

Rider 2022.2 EAP でサポートされた .NET MAUI の開発を macOS 環境上で行うためのセットアップについての記事。

Extending Visual Studio CodeLens Functionality

https://dev.to/calvinallen/extending-visual-studio-codelens-functionality-507f

Visual Studio の CodeLens を拡張して独自の CodeLens Provider を実装する方法についての記事。

Exploring The F# Frontend Landscape

https://dev.to/tunaxor/exploring-the-f-frontend-landscape-13aa

F# でのフロントエンド開発のフレームワークを紹介している記事。

How We Used dotMemory to Optimize dotMemory | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2022/05/23/how-we-used-dotmemory-to-optimize-dotmemory/

dotMemory のドミネーターツリーのパフォーマンスを dotMemory と dotTrace で改善したドッグフーディングの記事。

当初、しばらく実行すると物理メモリーを使い果たして動かなくなってしまうほどであったが、ドミネーターツリーの構築アルゴリズムの変更やデータ構造の変更といったことを行った結果現実的な時間とメモリー使用量になったとのこと。

Bringing WebAssembly to the .NET Mainstream - Steve Sanderson, Microsoft - YouTube

https://www.youtube.com/watch?v=PIeYw7kJUIg

.NET アセンブリを WebAssembly で動かすということについてのプレゼンテーション。

このプレゼンテーションでは Blazor WebAssembly ではなく、WASI を使用した .NET アプリケーションの WebAssembly 化の可能性についてを話している。

ライブラリ、リポジトリ、ツールなど

Cysharp/GrpcWebSocketBridge: Yet Another gRPC over HTTP/1 using WebSocket implementation, primarily targets .NET platform.

https://github.com/Cysharp/GrpcWebSocketBridge

gRPC のトランスポートとして HTTP/2 の代わりに WebSocket を利用することで Unity WebGL や Blazor WebAssembly から gRPC (Unary/Streaming) を利用できるようにする ASP.NET Core と .NET クライアント向けのブリッジライブラリー。

サイト、ドキュメントなど

ツイート

WinDbg Preview の新バージョンで .NET 6 へと移行して ARM64 で動くようになった話。

Deep Dive

Extended nameof parameter scope by BillWagner · Pull Request #29549 · dotnet/docs

https://github.com/dotnet/docs/pull/29549

nameof が使える範囲が C# 11 で広がるのでそのドキュメント更新の PR。