2021-11-12: .NET 6 & Visual Studio 2022 GA, YARP 1.0, LINQPad 7

Published on Friday, 12 November 2021

Visual Studio Launch Event と .NET Conf 2021 が開かれ、.NET 6 と Visual Studio 2022 が11月8日(日本時間の9日)にリリースされました。

.NET 6 ではランタイムやコアライブラリーの多くの改善だけでなく C# 10 と ASP.NET Core 6 が含まれています。公式のリリース記事はとても長いのですが、C# 10 や global using のようなものからコンテナー下での動作についてや PGO のような細かいものまで載っているのでトピックを眺めて気になる点をつまんでいくのがよさそうです。

また .NET 6 は LTS リリースであり、現在運用中のアプリケーションが .NET 5 である場合は EOL が半年後ということあるので早めの移行が推奨されています。

現時点で Visual Studio 2022 または Visual Studio Code の C# 拡張が .NET 6 対応となっていますが、Visual Studio 2022 for Mac のリリースは来年となることがアナウンスされている点は注意が必要です。JetBrains の Rider は現在 EAP での対応で近く対応版がリリースされるのではないかと予想しています。


YARP (Yet Another Reverse Proxy) の 1.0 がリリースされました。

簡単に言ってしまうと ASP.NET Core でハイパフォーマンスなリバースプロキシーを構築できるライブラリーです。ライブラリーとして提供されているため、利用者のニーズに合わせたカスタマイズがしやすい形になっているというのがウリです。Microsoft の社内でも既に利用されているとのことです。


LINQPad 7 がリリースされました。

.NET 6 への対応や ARM64 版の提供などが行われています。メジャーバージョンアップとなるため、無償アップグレード期間外に購入したライセンスの場合は有償アップグレードが必要となります。

トピックス

Announcing .NET 6 - The Fastest .NET Yet - .NET Blog

https://devblogs.microsoft.com/dotnet/announcing-net-6/

.NET 6 がリリースされた。

記事では .NET 6 での C# と F# といった言語も含めての多くの改善点がまとめられている。

サポートについても触れており、.NET 6 は LTS となることで3年間のアップデートがあることで特に .NET 5 からの移行は EOL の都合推奨されている。また Red Hat とのコラボレーションで RHEL 8 以降の AMD/Intel (x86_64), ARM64 (aarch64), IBM Z/LinuxONE (s390x) で利用できるようになるとのこと。

IDE サポートは Visual Studio 2022 と Visual Studio 2022 for Mac (未リリース) となり、Visual Studio 2019 や MSBuild 16、Visual Studio for Mac 8.0 はサポートされない。Visual Studio Code の C# 拡張は .NET 6 をサポートする。

Welcome to C# 10

https://devblogs.microsoft.com/dotnet/welcome-to-csharp-10/

C# 10 での新しく変わった部分についてまとめた記事。

  • グローバルと暗黙的な using
  • File-scoped namespaces
  • ラムダ式とメソッドグループの改善
    • 戻り値型の推論やラムダ式への属性など
  • struct の改善
    • パラメータなしコンストラクターとフィールド初期化, record struct, with
  • 文字列補完 (Interpolated string) の改善
    • InterpolatedStringHandler と定数としての文字列補完式
  • その他改善
    • deconstruct 時の代入の改善、限定代入の機能強化、拡張プロパティパターンや CallerArgumentExpressionAttribute など
  • プレビュー機能
    • インターフェースの static abstract メンバー

C# ガイドのドキュメントでも詳しく説明されている。

What's New in Xamarin and Visual Studio 2022

https://devblogs.microsoft.com/xamarin/whats-new-in-xamarin-and-visual-studio-2022/

Visual Studio 2022 と Xamarin のリリースについての記事。

Visual Studio 2022 でサポートされた機能と、Xamarin がサポートするモバイルプラットフォームのバージョンについて、.NET 6 への移行についてなど。

記事ではMAUI のスケジュールが変更となった影響で Xamarin のサポート期間にも触れ、Xamarin は Microsoft Modern Lifecycle に従い最後にリリースされてから2年間(2023年11月まで) のサポートとなるとのこと。

Announcing .NET MAUI Preview 10

https://devblogs.microsoft.com/dotnet/announcing-net-maui-preview-10/

MAUI Preview 10 がリリースされた。

このリリースには Visual Studio 2022 の Preview Channel が必要となる。変更点としては CollectionViewIndicatorView のハンドラー実装が追加、その他修正や改善など。

Announcing ASP.NET Core in .NET 6

https://devblogs.microsoft.com/dotnet/announcing-asp-net-core-in-net-6/

.NET 6 と共にリリースされた ASP.NET Core についてまとめた記事。

  • ホットリロード
  • Minimal API
  • 非同期ストリーミング
  • IAsyncDisposable
  • Bootstrap 5.1
  • Nullable reference type の対応
  • ページとビューでの CSS アイソレーション
  • ページとビューでの JavaScript モジュール
  • Blazor の改善
    • JavaScript からのコンポーネントのレンダリング
    • プリレンダリングのステートの保持
    • エラーバウンダリ
    • カスタムイベント引数
    • ジェネリック型パラメータの推論
    • コンポーネントの必須パラメーター
    • クエリーストリングのハンドリング
    • HTML の head のコントロール
    • JavaScript 初期化
    • 動的なコンポーネントのレンダリング
  • .NET WebAssembly ビルドツール
  • シングルページアプリケーションテンプレート (React, Angular)
  • Socket コントロール
  • 型のついたヘッダー
  • HTTP と W3C ロギングフォーマット
  • HTTP/3 (プレビュー)

詳しくは記事からリンクされているドキュメントや個別の記事で紹介されている。

F# 6 is officially here!

https://devblogs.microsoft.com/dotnet/fsharp-6-is-officially-here/

F# 6 がリリースされた。

記事ではドキュメントの更新やコミュニティーによるツールのアップデートについて触れている。

.NET 6 on Microsoft Azure

Azure のサービスでの .NET 6 サポートが開始された。今回は App Service に加え Azure Functions と Azure Static Web Apps も Day 0 でのサポートとなっている。

App Service は Windows と Linux の両 App Service プランで .NET 6 への対応が行われた。

Azure Functions も 4.0 がリリースされ、.NET 6 への対応が行われている。 Azure Static Web Apps も同様に .NET 6 への対応が行われ、Azure Functions と合わせてアプリケーションを構築できる。

Announcing YARP 1.0 Release - .NET Blog

https://devblogs.microsoft.com/dotnet/announcing-yarp-1-0-release/

YARP (Yet Another Reverse Proxy) 1.0 がリリースされた。

YARP は高速なリバースプロキシーを ASP.NET Core の上に実装するためのオープンソースのライブラリーとなっており、ライブラリー形式であることからユーザーのニーズに合わせた実装を行えるとのこと。

元々は Microsoft 社内でのリバースプロキシーの構築の相談が度々あったことから、共通のソリューションを用意するといった目的で始まったとのこと。サードパーティーのリバースプロキシーのカスタマイズや独自のリバースプロキシーを持つといったことをしていたが、HTTP/1 の対応はあるが gRPC のような HTTP/2 をサポートする必要があった場合でも実装が難しくなっていた。YARP はその点を ASP.NET Core と .NET および C# を使用してコントロールできるようにする。

YARP は ASP.NET Core のミドルウェアとしてリクエストを処理することとなるが、大きく二つの利用・カスタマイズ方法が提供される。

一つは完全なプロキシーとしての機能。これは URL のパターンでルートを定義し、クラスター/宛先を決定するといった機能。宛先のヘルス状態を使用したり、ロードバランシング、セッションアフィニティといったものをサポートする。これらの設定は拡張により外部のサービス、記事では Service Fabric から取得するといったこともできるとしている。

もう一つの利用方法としては高度な環境向けにルーティングやロードバランシングといったものを使用せず、直接 YARP のリクエストフォワーダーを呼び出す利用方法がある。これは Azure App Service で特定のインスタンスにルーティングするといった目的で使用しているとのこと。

YARP 1.0 で導入される機能は次のようなものとなる。

  • 構成
    • 静的ファイルやプログラマブルな拡張
    • アプリケーションコードによるルーティング
  • ルーティングとインバウンド接続
    • SNI/Host によるルート
    • URL やヘッダー値によるルーティング
    • セッションアフィニティ
    • ロードバランシングの複数のアルゴリズム、
    • 認証/認可と CORS 用ルート
  • プロキシーとアウトバウンド接続
    • URL 書き換え
    • リクエストとレスポンスの書き換え
    • メソッドの書き換え
    • アウトバウンド HTTP 接続の宛先の構成
    • プロキシによるリクエスト転送時に標準的なヘッダーの追加
    • gRPC と WebSocket のストリーミングを含むトラフィック
  • 診断
    • パフォーマンスモニタリングのためのメトリクス
    • ロギング
  • 全般
    • クラウドスケールパフォーマンス
    • ドキュメント
    • 容易な拡張性
    • .NET Core 3.1, .NET 5, .NET 6 のサポート

パフォーマンスは参考として10月時点で HTTP/1 での処理で Envoy と比較して高い性能が出ているとしている。

サポートは ASP.NET Core とコアライブラリーのネットワークチームによって行われ、24時間365日のようなサポートはないが GitHub の Issue は通常24時間以内に応答するとのこと。1.0 のサービスリリースとなり新機能は新バージョンにて提供予定。

最後に将来的に対応したいものとして HTTP/3 やパフォーマンスの改善、LLHTTP 対応、Service Fabric 対応、Kubernetes 統合といったものが挙げられている。

Visual Studio 2022 Preview Release Notes

https://docs.microsoft.com/en-us/visualstudio/releases/2022/release-notes-preview#1710-pre10--visual-studio-2022-version-171-preview-1-newreleasebutton

Visual Studio 2022 version 17.1 Preview 1 がリリースされた。

Azure App Service のプロセスアタッチサポートの追加や .NET の PDB に埋め込まれたソースコードへの Go To Definition、MAUI Preview 10 のサポート、コード診断結果(Warning など)をインラインで表示する試験的な機能の追加、XAML Hot Reload の改善など。

CommunityToolkit/dotnet: .NET Community Toolkit is a collection of helpers and APIs that work for all .NET developers and are agnostic of any specific UI platform. The toolkit is part of the .NET Foundation.

https://github.com/CommunityToolkit/dotnet

Windows Community Toolkit から UI プラットフォームに依存しない .NET 部分が切り離され、.NET Community Toolkit として公開された。

MVVM ライブラリーや ArrayPoolBufferWriter のようなパフォーマンスのためのヘルパーライブラリーなどが切り出されている。

Announcing dotnet monitor in .NET 6

https://devblogs.microsoft.com/dotnet/announcing-dotnet-monitor-in-net-6/

以前より試験的な位置づけとなっていた dotnet monitor がサポート対象のリリースとなった。

dotnet monitor は実行中の .NET アプリケーションから診断情報(ログやトレース、プロセスダンプ)を取得するためのツールでデータを収集するために次の二つの仕組みを持つ。

  • オンデマンドで収集するための HTTP API の提供
  • 指定したルールをトリガーを元に収集 (CPUの使用率が高いときに、といったケース)

dotnet monitor は .NET CLI Tool とコンテナーイメージでの提供となる。

記事では HTTP API のユースケースとしてアプリケーションのサイドカーとして dotnet monitor コンテナーを実行し、curl などでプロセスのログを取得するといった例を挙げている。どのような HTTP API が提供されているのかについても触れている。

トリガーに関しても CPU 使用率が 80% 以上が1分以上続いた場合に収集するルールといった例が挙げられている。

.NET November 2021 Updates – 5.0.12 and 3.1.21

https://devblogs.microsoft.com/dotnet/november-2021-updates/

.NET 5.0.12 と .NET Core 3.1.21 がリリースされた。

それぞれセキュリティー関連の更新はなく、ARM64 でのインストーラーの挙動や Entity Framework Core のプーリングなど細かい不具合修正を含むものとなっている。

.NET Framework November 2021 Cumulative Update

https://devblogs.microsoft.com/dotnet/net-framework-november-2021-cumulative-update/

.NET Framework の2021年11月の累積アップデートがリリースされた。

セキュリティー関連のアップデートは特になく、品質の向上と一部機能の改善が含まれている。

機能の改善は主にコンテナー環境のサポートとなっている。コンテナー環境においての CPU とメモリーの上限、少ないヒープの割り当て、プロセス分離モデルのサポート、ProcessorCount の手動設定のサポートなど。設定は環境変数の DOTNET_, COMPLUS_ で行う。

Release 2.0.0 · mysql-net/MySqlConnector

https://github.com/mysql-net/MySqlConnector/releases/tag/2.0.0

Async MySQL Connector 2.0.0 がリリースされた。

このリリースでは DateOnly や TimeOnly 対応や Batch API 対応などを含めた .NET 6 の対応、MySqlBulkCopy API の強化、ConnectionIdlePingTime の廃止、ターゲットフレームワークから netstandard1.3 と netcoreapp2.1 の削除、その他不具合の修正と改善が含まれている。

Announcing NuGet 6.0 - Source Mapping, Package Vulnerabilities, Faster Solution Load, Oh My!

https://devblogs.microsoft.com/nuget/announcing-nuget-6/

NuGet 6.0 がリリースされた。

このリリースでは次のような機能向上があることに触れている。

  • .NET 6 対応
  • ソースマッピング
  • Visual Studio 上でのパッケージ脆弱性確認
  • リトライとバックオフの設定 (Experimental)
  • デフォルト除外拡張子指定
  • Visual Studio での廃止情報表示の改善
  • Visual Studio でのパッケージ README の追加
  • Visual Studio でのソリューション読み込み時間とブランチ切り替え時間の改善

Integrations - Blazor

https://docs.microsoft.com/ja-jp/fluent-ui/web-components/integrations/blazor

Fluent UI Web Components (fast の Fluent UI) の Blazor 統合がリリースされた。

これにより Fluent UI のビジュアルを持つあらかじめ用意されているコンポーネントを簡単に Blazor に導入できるようになる。

DotnetOSS Grants - Dotnetos

https://dotnetos.org/initiatives/grants/

.NET 系のコンテンツを提供している Dotnetos がオープンソースの支援として傑出した OSS クリエーターを選出して6か月の GitHub Sponsorship を行う DotnetOSS Grants を開始した。

現時点では Jeremy Skinner 氏、Marc Gravell 氏、Alexandre Mutel 氏に与えられている。

LINQPad 7

https://www.linqpad.net/LINQPad7.aspx

LINQPad 7 がリリースされた。

.NET 6 の対応が行われた。このバージョンから x86 と x64 に加え ARM64 版の提供されるようになり ARM 版 Windows でも利用できるようになった。その他 Entity Framework Core 6.0 への対応、文字列の比較結果を表示する Util.Dif の追加など。

メジャーバージョンアップとなるため、LINQPad 6 のライセンスからは有償アップグレードする必要がある点に注意(無償アップグレード対象期間外の場合)。

Release v6.0.0 · npgsql/npgsql

https://github.com/npgsql/npgsql/releases/tag/v6.0.0

PostgreSQL のドライバー Npgsql 6.0.0 がリリースされた。

ロードバランシングやフェイルオーバーを含む複数サーバー接続、OpenTelemetry によるトレーシング、timestamp の改善、プレースホルダーの解釈をサーバーで行う Raw SQL モードの追加、.NET 6 で追加されたADO.NET のバッチ API への対応、SSL/TLS の改善、ロジカルレプリケーションサポートの改善、その他 .NET 6 に関連する対応など。timestamp のマッピングなどをはじめとして破壊的変更もいくつか存在する。

https://www.npgsql.org/doc/release-notes/6.0.html

Visual Studio 2022 for Mac Preview 3, and Upcoming Native M1 Processor Support

https://devblogs.microsoft.com/visualstudio/visual-studio-2022-for-mac-preview-3-and-upcoming-native-m1-processor-support/

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

Visual Studio 2022 for Mac ではネイティブ macOS 体験にフォーカスしていること。UI を macOS ネイティブのものへと移行し体験とアシスト技術へのサポート向上や IDE の速度向上と安定性の向上を目的としている、など。

Preview 3 では .NET 6 の GA 版リリースでの開発がサポートされた。

エディター部分の改善としてサブワードナビゲーションや各種コードフィックス等のリファクタリングの強化が行われている。

引き続きネイティブ macOS UI への移行が進められ75%が移行されているとする。このリリースでは Git のブランチ管理ダイアログ、NuGet の設定、コードフォーマットとプロジェクトの設定などが移行された。

近いうちに Apple M1 ネイティブで動作するようになるとのことにも触れている。この対応のために IDE が動作するランタイムを .NET 6 の CLR (現状 Mono) へと変更する予定であり、Intel も含め多くのパフォーマンス改善が得られるようになるとのこと。

Visual Studio 2022 for Mac の GA 版リリースは2022年の前半を予定している。

What’s New for Visual Basic in Visual Studio 2022

https://devblogs.microsoft.com/dotnet/whats-new-for-visual-basic-in-visual-studio-2022/

Visual Studio 2022 における Visual Basic 向けの機能強化についての記事。

  • フォントの変更
  • デバッグ時のブレークポイントの強化
  • エディターのサブワードナビゲーション
  • 継承元へジャンプできる継承マージン
  • IntelliSense のシンボル対応、
  • インラインパラメータ名ヒント
  • リファクタリングの強化
  • Windows Forms アプリケーションの起動時の ApplyApplicationDefaults イベントの追加
  • ソースジェネレーター対応

など、多くの Visual Studio の言語サポートが強化されている。

記事では既知の問題として、未使用の参照の削除で取りこぼしがあるケース、.editorconfig の設定の多くが C# 固有であること、.vbproj の ApplicationDefaultFont は現時点では無視されることなどがあるとしている。

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

Single File Apps In .NET 6 - .NET Core Tutorials

https://dotnetcoretutorials.com/2021/11/10/single-file-apps-in-net-6/

.NET 6 での単一ファイルアプリケーション (Single File App) についての記事。

記事では 単一ファイルアプリケーションの発行の仕方の基本に加えて .NET 6 で改善されたインメモリー展開や IL Trimming についても触れている。

祝 Unity 2021.2 C# 9 対応! - Qiita

https://qiita.com/up-hash/items/b43754c0763866b4fa96

Unity 2021.2 で対応した C# 9 の Unity で利用可能な機能などをまとめた記事。

Source generator updates: incremental generators: Exploring .NET Core 6 - Part 9

https://andrewlock.net/exploring-dotnet-6-part-9-source-generator-updates-incremental-generators/

Visual Studio 2022 (Roslyn 4.x) で導入された Incremental Source Generator (V2 API) についての解説記事。

記事では LoggerMessageGenerator のコードを例としてソースジェネレーターの処理のフローとパイプラインの構築方法といったものを解説している。

簡易版 .NETのランタイムデバッグをする方法 - Qiita

https://qiita.com/up-hash/items/7b0e9621e9d850e4088a

.NET ランタイム (dotnet/runtime) を Visual Studio でビルドしてデバッグ実行するまでの手順についての記事。

Blazor WebAssemblyアプリ上に展開されているFileSystemを触る - 窓を作っては壊していた人のブログ

https://teitoku-window.hatenablog.com/entry/2021/10/29/225536

.NET 6 の Blazor WebAssembly から Emscripten の File System API を介して仮想ファイルシステム(ブラウザー外のファイルシステムにアクセスするものとは別)を操作できるということについての記事。

Blazor WebAssemblyアプリ上で使えるNativeFileReferenceを使ったPreBuiltなwasmを含むパッケージを作ってみる - 窓を作っては壊していた人のブログ

https://teitoku-window.hatenablog.com/entry/2021/11/08/234722

Blazor WebAssembly でアクセス可能な仮想ファイルシステムと外部ネイティブライブラリーを組み合わせて利用することについての記事。

記事では日本語 TTS の Open JTalk を Emscripten でコンパイルして NativeFileReference で参照し、Open JTalk のデータを仮想ファイルシステムに展開するといったことを行っている。

Vlc.DotNet.Wpfの罠にはまった話 - Qiita

https://qiita.com/admiralhetare/items/576f11302110143bf405

Vlc.DotNet.Wpf の代わりに LibVLCSharp を使用して WPF アプリケーションでメディアを再生することについての記事。

Visual Studioで.NET Framework 4.8と.NET 6のソースコードを共存させる (WinForms&WPF) - Qiita

https://qiita.com/belre/items/2ea0d3614786786f7cee

.NET Framework 4.8 の Windows Forms プロジェクトを.NET 6 でもビルド出来る形に Visual Studio を使用して構成/共存する方法についての記事。

.NET 6 New Project Templates and Minimal APIs. Are you ready?

https://platform.uno/blog/net-6-new-project-templates-and-minimal-apis-are-you-ready/

MSBuild and 64-bit Visual Studio 2022

https://devblogs.microsoft.com/dotnet/msbuild-and-64-bit-visual-studio-2022/

Visual Studio 2022 で MSBuild も 64-bit 化されたことについての記事。

Visual Studio 2022 では MSBuild が 64-bit 化され、Develpper Command Prompt で通る PATH が指すものも 64-bit のものに変更された。この変更は dotnet build には影響しない。

これによって既存の 32-bit 環境を想定している MSBuild タスクが動作しなくなることがある。依存する原因としてファイルシステムパスやレジストリーなどを挙げている。他にも 32-bit のライブラリーをラップしている Visual Studio SDK に依存する場合も更新する必要がある。

記事では 32-bit と 64-bit 両対応方法とテストするパターンなどについて記している。

Bite-Size .NET 6 - UnionBy, IntersectBy, ExceptBy, and DistinctBy

https://exceptionnotfound.net/bite-size-dotnet-6-unionby-intersectby-exceptby-and-distinctby/

.NET 6 で LINQ に追加された UnionBy, IntersectBy, ExceptBy, DistinctBy についての記事。

*By メソッドでは集合の要素を比較する際に要素そのものの代わりに特定のプロパティーなどで比較できる。

In Memory Automated UI Testing ASP.NET Core

https://dev.to/jdinnovensa/in-memory-automated-ui-testing-aspnet-core-106d

インメモリーで ASP.NET Core アプリケーションの自動 UI テストを行うことについての記事。

記事では ASP.NET Core のアプリケーションをテストで実行するのに WebApplicationFactory とブラウザー自動化に .NET 向けの Playwright する形で対応している。 実際に利用した際や CI で実行時に発生する問題についても触れている。

Key-Value store built with CockroachDB, .Net 5.0, and Entity Framework

https://dev.to/acho_arnold/key-value-store-built-with-cockroachdb-net-50-and-entity-framework-1kl4

CockroachDB を使用して .NET 5 と Entity Framework Core で Key-Value ストアを実装する記事。

.NET 6 でのAPI変更を眺めてみる

https://zenn.dev/udaken/articles/overview-of-dotnet6-api-diff

.NET 6 での API の変更点を広く簡単にまとめている記事。

.NET 6 (Preview) における System.Random の実装変更 - 屋根裏工房改

https://andantesoft.hatenablog.com/entry/2021/03/28/231632

.NET 6 で変更された Random の実装についての解説記事。

シード未指定時にアルゴリズムとして xoshiro256** が使用されるように変わったこと、出力関数の改善点、パフォーマンスなどについて触れている。

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

Maoni0/realmon: A monitoring tool that tells you when GCs happen in a process and some characteristics about these GCs

https://github.com/maoni0/realmon

artiomchi/FlexLabs.Upsert: FlexLabs.Upsert is a library that brings UPSERT functionality to common database providers for Entity Framework in their respective native SQL syntax

https://github.com/artiomchi/FlexLabs.Upsert

Entity Framework Core で UPDATE OR INSERT いわゆる UPSERT を行うための拡張ライブラリー。SQLServer, PostgreSQL, SQLite, MySQL に対応している。

GitHub - sharpliner/sharpliner: Use C# instead of YAML to define your Azure DevOps pipelines

https://github.com/sharpliner/sharpliner

Azure Pipelines の YAML を C# のソースコードでタイプセーフに記述できるようにするライブラリー。

microsoft/VisualStudioSwag: Digital swag for Microsoft Visual Studio.

https://github.com/microsoft/VisualStudioSwag

Visual Studio のデジタル Swag (おみやげ/記念品)。壁紙や 3D データなどが公開されている。

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

文字列補間ハンドラーを詳しく学習する

https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/tutorials/interpolated-string-handler

.NET 6 で追加された文字列補完式の拡張の文字列補完ハンドラー(InterpolatedStringHandler)の実装方法についてのドキュメント。

ツイート

UWP の .NET Native (AOT) でも ComputeSharp を気合で動かせたという話(ComputeSharp は少し前まで .NET 5 向けで現在 .NET 6 向けとなっている)。

.NET 5 の EOL が半年後に来るという話。.NET 5 は LTS ではないためリリースから18か月で EOL を迎えることとなり来年の5月8日がサポート終了日となる。

環境変数 MSBuildDebugEngine1 を設定した状態で Visual Studio を起動することで Visual Studio がビルドした際(デザイン時のものを含む)の binlog を取得できるというテクニック。

Deep Dive

[API Proposal]: Posix error codes · Issue #61351 · dotnet/runtime

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

POSIX エラーコードを扱う enum などが欲しいという提案。プラットフォームによってエラーコードが違うこと、CLR や Mono は内部でマッピングを持っているが詳細を公開 API にするつもりはないということで閉じられている。

[.NET 6] UriBuilder breaking change not documented · Issue #61363 · dotnet/runtime

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

new UriBuilder("myapp", "host", 0, "path") のように UriBuilder に独自スキームとポート番号 0 を渡したときに出力する Uri に .NET 5 まではポート番号が含まれていなかったが、.NET 6 で含まれるようになったので破壊的変更ではという Issue。元々 -1 が省略の意味だったので正しく 0 を扱えるようバグ修正した結果とのこと。

EPIC: SignalR - .NET7 · Issue #38196 · dotnet/aspnetcore

https://github.com/dotnet/aspnetcore/issues/38196

SignalR の .NET 7 でのエピック

Add Enumerable.Concat & Enumerable.Flatten methods by eiriktsarpalis · Pull Request #61230 · dotnet/runtime

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

LINQ の Concat に3つ以上の IEnumerable<TSource> を受け取るオーバーロードの追加とシーケンスを平坦化する Flatten メソッドの追加 PR。

Adding a proposal for the self-constraint by tannergooding · Pull Request #5387 · dotnet/csharplang

https://github.com/dotnet/csharplang/pull/5387

IEquatable<T> のようなジェネリックパラメーターに実装する型を指定するようなパターン(class Foo : IEquatable<Foo> { ... })で型パラメータを自身に制限する制約を追加したいという提案。

Use file scoped namespaces by pranavkm · Pull Request #38076 · dotnet/aspnetcore

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

ASP.NET Core のソースコードを file-scoped namespace に変更する PR。