2022-03-19: .NET 7 Preview 2, .NET MAUI Preview 14, Visual Studio 25th Anniversary

Published on Saturday, 19 March 2022

トピックス

Announcing .NET 7 Preview 2 - The New, 'New' Experience - .NET Blog

https://devblogs.microsoft.com/dotnet/announcing-dotnet-7-preview-2/

.NET 7 Preview 2 がリリースされた。

Preview 2 では Regex ソースジェネレーター、新しい dotnet new CLI 体験、NativeAOT のメインラインへの取り込みの進行などが含まれている他、ランタイムや API に様々な改善が行われている。

.NET SDK のコマンドライン周りにも改善が入ったことでタブ補完 (PowerShell, bash, zsh, fish) に対応したとのこと。

ASP.NET Core updates in .NET 7 Preview 2 - .NET Blog

https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-7-preview-2/

.NET 7 Preview 2 での ASP.NET Core のアップデートについての記事。

記事では次のアップデートについて触れている。

  • コントローラーのアクションのパラメーター値として DI される値の推測 (Minimal API 同様 [FromService] が不要となる)
  • SignalR の Hub メソッドの DI サポート
  • Minimal API でのデスクリプションとサマリーのサポート
  • Minimal API でのヘッダーとクエリーストリングのバインディングで配列や StringValues のサポート
  • Cookie の許可値のカスタマイズ
  • IIS でのシャドウコピーのサポート (Experimental)

Announcing .NET MAUI Preview 14 - .NET Blog

https://devblogs.microsoft.com/dotnet/dotnet-maui-preview-14/

.NET MAUI Preview 14 がリリースされた。

このリリースでは多くの問題や改善が行われたほか、デスクトップアプリ向けのメニューバーのサポートが追加された。

その他記事では Microsoft.Maui.Essentials についても触れている。

Happy 25th birthday Visual Studio! - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/happy-25th-birthday-visual-studio/

Visual Studio がリリースされてから25周年という記事。

25周年を記念してバーチャルイベントが開催されたほか、Swag や Visual Studio 向けの記念テーマなどがリリースされている。

Visual Studio 2022 for Mac Preview 7 - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/visual-studio-2022-for-mac-preview-7/

Visual Studio 2022 for Mac 17.0 Preview 7 がリリースされた。

このリリースでは Xamarin のツールサポートが追加され、.NET 6 と Apple Silicon で動作する Azure Functions V4 ツールが含まれている。その他コードの書式設定などの環境設定画面の macOS ネイティブ UI への移行が完了した。

.NET March 2022 Updates – .NET 6.0.3, .NET 5.0.15 and, .NET 3.1.23 - .NET Blog

https://devblogs.microsoft.com/dotnet/march-2022-updates/

.NET 6.0.3, .NET 5.0.15, .NET 3.1.23 がリリースされた。

このリリースでは様々な不具合等の修正のほか次の3つの脆弱性の修正が行われている。

Uno Platform 4.1 - 30% Perf Boost, Android 12, .NET 6 Mobile Preview 13 and more

https://platform.uno/blog/uno-platform-4-1-30-perf-boost-android-12-net-6-mobile-preview-13-and-more/

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

パフォーマンスに関する様々な改善、Android 12 のサポートの追加、.NET 6 Mobile Preview 13 (MAUI Preview 13) への対応などが含まれる。

Release Release v2.44.0 · grpc/grpc-dotnet

https://github.com/grpc/grpc-dotnet/releases/tag/v2.44.0

gRPC (grpc-dotnet) v2.44.0 がリリースされた。

いくつかの不具合修正とサブチャンネルの呼び出しをトラックするためのインターフェース (ISubchannelCallTracker) の追加が行われている。

GNOMEとMonoとXamarinの開発者Miguel de Icaza(ミゲル・デ・イカザ)氏がマイクロソフト退職を発表

https://www.publickey1.jp/blog/22/gnomemonoxamarinmiguel_de_icaza.html

GNOME や Mono、Xamarin の開発者である Miguel de Icaza 氏が Microsoft を退職したことが発表となった。

ReSharper / Rider 2022.1 EAP 5

ReSharper と Rider の 2022.1 EAP5 がリリースされた。

ReSharper はバグフィックスが主な変更点となり、Rider はリモート開発のサポートや Unity のサポートの向上などが行われている。

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

Logging gRPC on .NET Using Serilog

https://medium.com/@tunadonmez/logging-grpc-on-net-using-serilog-c40a8fbc0426

ASP.NET Core で gRPC サーバーを構築してそのログを Serilog で出力するという構成についての記事。

Building a gRPC Server in .NET

https://dev.to/sahan/building-a-grpc-server-in-net-52gc

ASP.NET Core で gRPC サーバーを実装する方法についての記事。

Xamarin.Formsにおけるスクリーンリーダー対応まとめ - Qiita

https://qiita.com/uhooi/items/ac4945bc3cb6694d5257

Xamarin.Forms におけるスクリーンリーダーの対応状況についての記事。

MAUIがリリースされる前にAvaloniaUIのStylingを試す

https://zenn.dev/t13801206/articles/2203-avalonia-comparison-style

Avalonia での UI のスタイリングを WPF と比較して紹介する記事。

MAUIがリリースされる前にAvaloniaUIのDIを試す

https://zenn.dev/t13801206/articles/2203-avalonia-comparison-di

Avalonia での DI についての記事。

Cancelling await calls in .NET 6 with Task.WaitAsync()

https://andrewlock.net/cancelling-await-calls-in-dotnet-6-with-task-waitasync/

.NET 6 で追加された Task.WaitAsync メソッドについての記事。Task.WaitAsync を使用することでタイムアウトを比較的少ないコードで実装できるようになる。

A deep-dive into the new Task.WaitAsync() API in .NET 6

https://andrewlock.net/a-deep-dive-into-the-new-task-waitasync-api-in-dotnet-6/

Task.WaitAsync メソッドそのものの実装についての解説記事。

Configuring Life Cycle Events in .NET MAUI Apps

https://dev.to/syncfusion/configuring-life-cycle-events-in-net-maui-apps-38ag

.NET MAUI のアプリケーションでライフサイクルイベントを構成する方法ついての記事。

C# 10 PriorityQueue is here !

https://medium.com/@dorlugasigal/c-10-priorityqueue-is-here-5067e2628470

.NET 6 の PriorityQueue の仕組みと使い方についての記事。

Modelling workflows with Finite State Machines in .NET

https://www.lloydatkinson.net/posts/2022/modelling-workflows-with-finite-state-machines-in-dotnet/

Stateless というステートマシンを実装するためのライブラリーを使用して有限ステートマシンでワークフローをモデリングするという記事。

What’s the maximum number of arguments for method in C# and in .NET? | tabs ↹ over ␣ ␣ ␣ spaces by Jiří

https://www.tabsoverspaces.com/233892-whats-the-maximum-number-of-arguments-for-method-in-csharp-and-in-net

C# のメソッドの引数は最大いくつにできるのか、という記事。

記事では T4 で生成したコードをコンパイルしたところ65536個までコンパイルできたが、実際に呼び出せるのは .NET 6.0.2 では8192個までだったとしている。

Executing code before Main in .NET - Gérald Barré

https://www.meziantou.net/executing-code-before-main-in-dotnet.htm

.NET が Main (エントリーポイント) を呼び出すより前に何らかのコードを実行する方法についての記事。

記事では静的コンストラクタ、モジュール初期化、スタートアップフックを紹介している。

Automate code metrics and class diagrams with GitHub Actions - .NET Blog

https://devblogs.microsoft.com/dotnet/automate-code-metrics-and-class-diagrams-with-github-actions/

GitHub Actions を使用して自動的にコードメトリクスやクラスダイアグラムを生成する方法についての記事。

SQLiteの書き込みを高速にする(EntityFrameworkCoreのMicrosoft.Data.Sqlite版) - Qiita

https://qiita.com/ShTair/items/47c15fa65c4523b56e91

System.Data.SQLite では指定できていたパフォーマンスに影響するオプションと同様のプラグマを Entity Framework Core の SQLite 実装 (Microsoft.Data.Sqlite) でセットする方法ついて。

Entity Framework Core で Bulk Insert する

https://zenn.dev/mono_matsu/articles/40e74c0022b9e6

Entity Framework Core での Bulk Insert についての記事。

C#の進化を垣間見てみよう - .NET 20周年を記念して - Qiita

https://qiita.com/gushwell/items/df3ef1f0c583feeead75

C# が20年間で変わってきた部分を C# 3.0 のコードを書き換えながら紹介してる記事。

Live Unit Testing Preview: Better and Faster - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/live-unit-testing-preview-better-and-faster/

Visual Studio Enterprise で提供されているライブユニットテストの新しいビルド体験を提供するプレビュー機能についての記事。

LiteDBとSQLiteのパフォーマンスを計測してみた(C#) - Qiita

https://qiita.com/KyoheiOkawa/items/903768bec2f801ef3c7c

LiteDB (.NET ネイティブなデータベース)と SQLite でのパフォーマンスの比較記事。

ASP.NET Core開発者ロードマップを日本語訳しました - Qiita

https://qiita.com/k2491p/items/ac62468260d002cb5fe1

Moien Tajik 氏が書いた ASP.NET Core でのアプリケーション開発者として学ぶためのロードマップを日本語訳したもの。

ASP.NET Core Blazor Server でオレオレ ログインを作りたい

https://zenn.dev/okazuki/articles/signin-blazor-server

ASP.NET Core Blazor Server で ASP.NET Core Identity や外部の ID プロバイダーを使用した認証を使用しない、独自の認証機構を実装する方法についての記事。

Create a Custom GitHub Action with C#

https://ferrywlto.medium.com/create-a-custom-github-action-with-c-b056de359cb5

Docker ベースの GitHub Actions のカスタムアクションを C# で実装する方法についての記事。

Auto Updating Created, Updated and Deleted Timestamps In Entity Framework - .NET Core Tutorials

https://dotnetcoretutorials.com/2022/03/16/auto-updating-created-updated-and-deleted-timestamps-in-entity-framework/

Entity Framework Core で更新日時、削除日時のようなタイムスタンプを自動で更新する方法についての記事。

Using EF Core Global Query Filters To Ignore Soft Deleted Entities - .NET Core Tutorials

https://dotnetcoretutorials.com/2022/03/17/using-ef-core-global-query-filters-to-ignore-soft-deleted-entities/

Entity Framework Core で論理削除された要素を常にフィルターするといった方法についての記事。

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

GitHub - tackme31/howmessy: How messy is your code?

https://github.com/tackme31/howmessy

Visual Studio の CodeLens 上にコードの複雑度を表示する Visual Studio 拡張。

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

Rome .NET Conference – The Background on Background Tasks in .NET 6

https://scottsauber.com/2022/03/17/rome-net-conference-the-background-on-background-tasks-in-net-6/

.NET 6 でのバックグラウンド処理を行う際の手法についてのスライド。

deep dive distributed tracing

https://www.slideshare.net/tanakata/deep-dive-distributed-tracing

分散トレーシングの仕組みとその表現についてのスライド。

ツイート

Visual Studio 2022 は .NET Framework 4, 4.5 をサポートしていないので Json.NET はこれ以降 .NET Framework 4.6.2 以降のサポートにしようと思うがどうかという話。

Deep Dive

Add Stopwatch.GetElapsedTime by stephentoub · Pull Request #66372 · dotnet/runtime

https://github.com/dotnet/runtime/pull/66372

Stopwatch.GetTimestamp() が返す値は環境によって異なり Frequency で割るといった必要があったので、タイムスタンプを直接 TimeSpan に変換するメソッドを追加するという PR。

System.Linq work planned for .NET 7 · Issue #64601 · dotnet/runtime

https://github.com/dotnet/runtime/issues/64601

.NET 7 での System.Linq に関するプランニングされた作業の Issue。

Add gRPC JSON transcoding by JamesNK · Pull Request #40242 · dotnet/aspnetcore

https://github.com/dotnet/aspnetcore/pull/40242

gRPC のリクエスト/レスポンスを JSON 形式に変換することで Web API として効果する仕組みの提供の PR。