2022-12-15: .NET 7 Networking Improvements, Visual Studio 2022 version 17.5 Preview 2, .NET 7.0.1, .NET 6.0.12, .NET Core 3.1.32, IronPython 3.4.0

Published on Thursday, 15 December 2022

トピックス

.NET 7 Networking Improvements - .NET Blog

https://devblogs.microsoft.com/dotnet/dotnet-7-networking-improvements/

.NET 7 のネットワーク関連の改善について紹介している記事。

記事では次の項目について詳しく説明している。

  • 接続の施行に失敗した際のハンドリングの改善
  • HttpHeaders の読み取りスレッドセーフティ
  • HTTP/2 と HTTP/3 のプロトコルエラーの検出
  • HTTP/3
  • QUIC
    • .NET での QUIC
    • API (QuicListener, QuicConnection, QuicStream)
  • セキュリティ
    • Negotiate API (Windows 認証)
    • 証明書検証のオプション
    • パフォーマンス
  • WebSockets
    • WebSockets のハンドシェイクレスポンスの詳細
    • 外部 HTTP クライアントの提供
    • WebSockets over HTTP/2

Try out Visual Studio 2022 version 17.5 Preview 2 - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/try-out-visual-studio-2022-17-5-preview-2/

Visual Studio 2022 version 17.5 Preview 2 がリリースされた。

  • オールインワン検索の改善
  • 編集時のスティッキースクロール
  • デバッガーテキストビジュアライザーでの URL エンコード文字列や Base64、JWT といった文字列のデコード
  • クイック追加
  • 再認証ワークフローの改善
  • ASP.NET Core アプリケーションの Azure Container Apps への発行
  • ASP.NET Core プロジェクトのアプリケーション出力の統合ターミナルへの出力
  • さまざまな C++ の改善
  • .config ファイルを使用したインストールレイアウトのカスタマイズ
  • 終了時に更新する機能

.NET December 2022 Updates – .NET 7.0.1, .NET 6.0.12, .NET Core 3.1.32 - .NET Blog

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

.NET 7.0.1, .NET 6.0.12, .NET Core 3.1.32 がリリースされた。

このリリースでは一件のセキュリティー修正が含まれ、細工された XPS ファイルを開くことでコードを実行できる、リモートコード実行の脆弱性が修正されている。

また、.NET Core 3.1 は2022年12月13日でサポート終了となるため、このリリースが最後のリリースとなる。

.NET Framework December 2022 Security and Quality Rollup Updates - .NET Blog

https://devblogs.microsoft.com/dotnet/dotnet-framework-december-2022-security-and-quality-rollup-updates/

.NET Framework のセキュリティーと累積ロールアップ更新の2022年12月リリース。

このリリースでは一件のセキュリティー修正が含まれ、細工された XPS ファイルを開くことでコードを実行できる、リモートコード実行の脆弱性が修正されている。

Release IronPython 3.4.0 · IronLanguages/ironpython3

https://github.com/IronLanguages/ironpython3/releases/tag/v3.4.0

IronPython 3.4.0 がリリースされた。

このリリースでは Python 3.4 の構文と標準ライブラリーをサポートする。また一部の新しいバージョンの構文などもサポートしている。

ランタイムターゲットは .NET Framework 4.6.2, .NET Core 3.1, .NET 6 となっている。

.NET Tools としても配布され、dotnet tool install -g IronPython.Console といった形でのインストールと実行も可能となった。

-「IronPython 3.4.0」がようやく正式版に ~.NETと統合されたPython言語のオープンソース実装/「Python 2」から「Python 3」へ移行- 窓の杜

Polyglot Notebooks - December 2022 Release - .NET Blog

https://devblogs.microsoft.com/dotnet/polyglot-notebooks-december-2022-release/

Polyglot Notebooks (旧 .NET Interactive) の2022年12月のリリース。

  • .NET 7 へのアップグレード
  • C# 11 と F# 7 のサポート
  • 新しい動的カーネルピッカーによる SQL と KQL の改善

Release 2.2.2 · mysql-net/MySqlConnector

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

Async MySqlConnector 2.2.2 がリリースされた。

このリリースでは TLS 接続初期化時のメモリーリークや接続時の例外発生時のオブジェクト破棄の問題が修正されている。

Visual Studio Code November 2022

https://code.visualstudio.com/updates/v1_74

Visual Studio Code 1.74 (1.74.1) がリリースされた。

  • アクセシビリティの改善
  • エクスプローラーの自動表示のカスタマイズ
  • ノートブックと差分表示のオーディオキュー
  • マージエディターでのアンドゥ/リドゥ
  • 安全ではないリポジトリの管理
  • JavaScript console.profile による収集
  • return からの定義へ移動 (JavaScript/TypeScript)
  • リモートトンネル
  • Jupyter Notebook の "Just My Code" デバッグ
  • Dev Container の GPU サポート

また、1.74 リリース後に様々な不具合を修正した 1.74.1 がリリースされている。

Migrating from ASP.NET to ASP.NET Core with Project Migrations Part 5 - .NET Blog

https://devblogs.microsoft.com/dotnet/migrating-from-asp-net-to-asp-net-core-part-5/

ASP.NET から ASP.NET Core への移行記事シリーズ。System.Web.Adapter 1.0 がリリースされた。

記事では移行の Visual Studio 拡張機能と System.Web.Adapter の更新について紹介している。

Dev tunnels in Visual Studio for ASP.NET Core projects - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/dev-tunnels-in-visual-studio-for-asp-net-core-projects/

Visual Studio の ASP.NET Core プロジェクトで使用できるプレビュー機能である Dev tunnels (開発トンネル) についての紹介記事。

Dev tunnels は ngrok のような外部からローカル環境へアクセスできるようにポートフォワーディングを行う機能。

記事では最新の更新内容と、機能の使用方法、永続トンネルと一時トンネルの違い、ツールウィンドウ、環境変数のサポートといったものを紹介している。

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

未使用ジェネリック型引数で TypeLoadException が起こる問題 | ++C++; // 未確認飛行 C ブログ

https://ufcpp.net/blog/2022/12/unused-generic-type-parameter/

構造体のジェネリクスとそれを含む構造体に関する、ランタイムの挙動の問題についての記事。

struct A<T> {}struct B { A<B> Value; } のように定義した場合、再帰しているわけではないが防衛的に例外をスローするという話。

.NET Lambda の Native AOT を実際に試してみた | DevelopersIO

https://dev.classmethod.jp/articles/net-lambda-native-aot/

AWS Lambda でサポートされた .NET アプリケーションの Native AOT を実際に試した記事。

記事では動作させる手順に加え、実際の起動時間などについても計測して触れている。(Native AOT の方が遅くなっている、など)

.NET MAUI でクロスプラットフォーム対応(予定)のメモアプリ作った

https://zenn.dev/tomori_k/articles/966f34daea405a

.NET MAUI でメモアプリケーションを実装してみたという記事。

NuGet 6.4 の Central Package Management を使って複数プロジェクト間のバージョン管理を改善する - しばやん雑記

https://blog.shibayan.jp/entry/20221211/1670748155

NuGet 6.4 の Central Package Management を使用してプロジェクトのパッケージバージョン管理を一元化することについての記事。

記事ではコンバーターの存在や Dependabot での注意にも触れている。

Blazor WebAssembly - どこからも参照されていないコードが削除されるようにして .dll のサイズを小さくする - Qiita

https://qiita.com/jsakamoto/items/91c86a0f34de6e6d77b9

Blazor WebAssembly でアセンブリトリミングを行なってファイルサイズを削減する方法についての記事。

[助けを求む] Blazor Server を Playwright で E2E テストするとき、Playwright の初動が早すぎてテストが失敗する - Qiita

https://qiita.com/jsakamoto/items/3d749a9ba4f8523b5291

Blazor Server を Playwright でテストする際に、プリレンダーされたコンテンツにイベントハンドラーが接続されるよりも前に Playwright が読み込み完了として動いてしまう問題についての記事。

What’s new in Visual Studio productivity - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/whats-new-in-visual-studio-productivity/

Visual Studio の生産性向上のための新しい機能を紹介している記事。

  • 出力ウィンドウのタイムスタンプ
  • 選択範囲の一致
  • マウスホイールで水平方向にスクロールする
  • 音を手がかりにコードを追う
  • 行番号の強調表示

拡張メソッドは暗黙型変換を見ない | ++C++; // 未確認飛行 C ブログ

https://ufcpp.net/blog/2022/12/extension-resolution/

暗黙型変換するものに対する拡張メソッドは利用できないということについて解説している記事。

5 new MVC features in .NET 7

https://andrewlock.net/5-new-mvc-features-in-dotnet-7/

.NET 7 の ASP.NET Core MVC の新機能7つを紹介している記事。

  • プリミティブバインディングの IParseable, TryParse
  • MVC コントローラは自動的に [FromServices] であると推測する
  • 必須かどうかの推測に nullable アノテーションを使用する
  • MVC での IResult サポート
  • カスタマイズされたメタデータプロバイダーはレスポンスでより良いエラー名提供する

Use Keycloak as Identity Provider from Blazor WebAssembly (WASM) applications

https://dev.to/nikiforovall/use-keycloak-as-identity-provider-from-blazor-webassembly-wasm-applications-3an6

Blazor WebAssembly から Keycloak を IdP として使用する方法についての記事。

VS2022 の新機能 DevTunnel (開発トンネル)でローカルデバッグ環境に Azure から簡単アクセス - Qiita

https://qiita.com/seuharuka/items/6f77983a179042b48e59

Visual Studio 2022 のプレビュー機能である Dev tunnels の機能の紹介と使用方法の記事。

C#11の.NET 6.0と.NET Framework 4.8に対する互換性 - Qiita

https://qiita.com/skitoy4321/items/77aff330a4ce63dd977c

.NET 7 でサポートされる C# 11 の機能が .NET 6 や .NET Framework 4.8 でどこまで使用できるか(サポートされるわけではない)ということをまとめている記事。

MAUI アプリを GitHub Actions 上でビルドする

https://zenn.dev/proudust/articles/2022-12-06-build-maui-on-gh-actions

.NET MAUI アプリケーションを GitHub Actions でビルドする対応状況と手順についての記事。

動的に入力項目を増やしたり出来るフォームを Blazor で作ってみよう

https://zenn.dev/okazuki/articles/dynamic-items-form-in-blazor

Blazor でフォーム中の項目を動的に増減し、バリデーションも行うといったことを実現する方法についての記事。

Background audio streaming with CommunityToolkit.Maui.MediaElement (Preview) for Android and iOS

https://dev.to/mephisztoe/background-audio-streaming-with-communitytoolkitmauimediaelement-preview-for-android-and-ios-340p

CommunityToolkit.Maui.MediaElement (Preview) を使用して Android と iOS でバックグラウンドで音声をストリーミング再生する方法についての記事。

【調査】MSBuild でビルドした直後に dotnet test を実行するとリビルドされる - Qiita

https://qiita.com/lx-sasabo/items/557ff31eee36429d229e

MSBuild でビルドした後に dotnet test を実行すると再度ビルドが実行されることがあるケースについて調査したという記事。

記事では Microsoft.NET.Build.Extensions の使用の有無によって結果が変わっていたとのこと。

Schedule Jobs with Quartz.NET - Code Maze

https://code-maze.com/schedule-jobs-with-quartz-net/

Quartz.NET でジョブをスケジュールして、バックグラウンドで処理をする方法について紹介している記事。

Introducing Wolverine for Effective Server Side .NET Development

https://jeremydmiller.com/2022/12/12/introducing-wolverine-for-effective-server-side-net-development/

Wolverine という Mediator/Message Bus を使用してサーバー開発を行うという紹介。

Blazor WebAssembly(ASP.NET Coreホスト)を無料利用可能なFly.ioにデプロイする(EF Core+PostgreSQL使用) - Qiita

https://qiita.com/nobu17/items/824c39493f7b12e94f7b

Blazor WebAssembly を fly.io にデプロイしてサーバーサイドは EF Core で PostgreSQL に接続するといったことを行う記事。

Figmaで作る.NET MAUI UIコンポーネント - Qiita

https://qiita.com/MAUIHighSchool/items/232e1bb3d65080f2c548

Figma のデザインから .NET MAUI のコードを生成して UI コンポーネントを作成するサンプル記事。

Reduce The 2FA'S Token Provider Length in ASP.NET Core Identity To 4 Digits Instead Of 6 Digits in .NET 7

https://dev.to/mohammedahmed/reduce-the-2fas-token-provider-length-in-aspnet-core-identity-to-4-digits-instead-of-6-digits-in-net-7-6fh

ASP.NET Core Identity の 2FA のトークンプロバイダーをカスタマイズすることで6桁から4桁に変更を試みる方法についての記事。

CommunityToolkit.Mvvm V8 入門 - Qiita

https://qiita.com/kk-river/items/d974b02f6c4010433a9e

CommunityToolkit.Mvvm 8.0.0 の紹介記事。

プロパティやコマンドのコード生成、メッセンジャーなどを紹介している。

New ArgumentException and ArgumentOutOfRangeException helpers in .NET 8

https://steven-giesel.com/blogPost/f4bc6fcc-5691-4f72-b9bb-75aeeb59230a

.NET 8 で ArgumentExceptionArgumentOutOfRangeException に追加を検討しているヘルパーメソッドについて紹介している記事。

Is the regression in GC or something else?

https://maoni0.medium.com/is-the-regression-in-gc-or-something-else-38f10018dd21

GC のリグレッションについての記事。

ランタイムを変更した時など GC のリグレッションのように見えるがそうではないものもあること、GC を変更することでリグレッションかどうかを確認できることなどを説明している。

Text Classification in C# with ML.NET 2.0

https://medium.com/accessibleai/text-classification-in-c-with-ml-net-2-0-bc979dfd8ca9

ML.NET 2.0 を使用してテキスト分類を行う方法についての記事。

.NET MAUI × Stripe C#クロスプラットフォームで楽々クレジット決済 - Qiita

https://qiita.com/MAUIHighSchool/items/393ba93e2eade7f8c9b9

.NET MAUI で Stripe SDK を組み込んでクレジット決済をアプリケーション内に実装する方法についての記事。

C# 11(コーディングで使える)新しい機能 - Qiita

https://qiita.com/sh1ch/items/0b6add41584b5ba7f698

C# 11 での新しい機能をコードとともに紹介している記事。

Managing Multiple Versions of Your API with .NET and Swagger

https://medium.com/@saeedeldah/managing-multiple-versions-of-your-api-with-net-and-swagger-47b4143e8bf5

ASP.NET Core Web API のバージョニングと API Explorer を使用した Swagger を組み合わせて使用する方法についての記事。

C#で書いたライブラリをPHPやGoから呼び出す - Qiita

https://qiita.com/Gaku_Ishii/items/ad4abb1e0073519877d7

.NET のコードを Native AOT でネイティブライブラリーとしてビルドし、PHP や Go から呼び出す方法を紹介している記事。

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

ugai/narabemi: Quick side-by-side video comparison tool

https://github.com/ugai/narabemi

映像を並べてサイドバイサイドで比較できるツール。

hadashiA/VYaml: The extra fast, low memory footprint YAML library for C#, focued on .NET and Unity.

https://github.com/hadashiA/VYaml

.NET Standard 2.1 移行をターゲットとしたハイパフォーマンスで省メモリーな YAML ライブラリー。

davidfowl/SmartLoadBalancer: Sticky sessions without sticky sessions

https://github.com/davidfowl/SmartLoadBalancer/

SignalR のようなもののためにスティッキーセッションを持たず、スティッキーセッションを実現する実験的実装。

YARP で当たりの SignalR サーバーを引くまでリクエストの転送を試行繰り返すという仕組み。

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

ツイート

Newtonsoft.Json 13.0.1 には大多数は影響を受けない小さなリグレッションがあり、それが使い物にならないものとして勘違いされ(パッチはされているけど使い物にならないから 13.0.2 にみたいな)、脆弱なバージョンとしてマークされてしまったという話。

Deep Dive

RMS v3.0 Planning · Issue #258 · microsoft/Microsoft.IO.RecyclableMemoryStream

https://github.com/microsoft/Microsoft.IO.RecyclableMemoryStream/issues/258

RecyclableMemoryStream の v3.0 のプランニング Issue。