2022-02-12: .NET 6.0.2 and 5.0.14, ImageSharp 2.0.0, Visual Studio support lifecycle

Published on Saturday, 12 February 2022

トピックス

.NET February 2022 Updates – 6.0.2 and 5.0.14 - .NET Blog

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

.NET 5.0.14 と 6.0.2 がリリースされた。

このリリースではいくつかの不具合と脆弱性の対応が行われている。

脆弱性の対応は Kestrel の HTTP/2 および HTTP/3 に関する DoS となるもので、.NET 5 と 6 共に影響を受ける。

Six Labors : Announcing ImageSharp 2.0.0

https://sixlabors.com/posts/announcing-imagesharp-200/

ImageSharp 2.0.0 がリリースされた。

WebP、Tiff、Pbm といった画像フォーマットの対応が追加され、XMP メタデータの対応や様々なパフォーマンス改善が行われた。

特にパフォーマンスは Sustem.Drawing の最大3倍程度高速となったとしている。

Support ends for older versions of Visual Studio - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/support-ends-for-older-versions-of-visual-studio-feb2022/

旧バージョンの Visual Studio のサポート終了についての記事。

Visual Studio 2012 から 2019 までの各バージョンについてのサポート期間について触れている。

  • Visual Studio 2012: 2023年1月9日にサポート終了
  • Visual Studio 2017: 2022年4月12日にメインストリームサポートが終了し、2027年4月まで延長サポートでセキュリティー修正が提供される。サポートを受けるために 15.9 への移行を推奨
  • Visual Studio 2019 version 16.7: 2022年4月12日にサポート終了。引き続きサポートを受けるためには 16.11 か Visual Studio 2022 への移行を推奨
  • Visual Studio 2019 Preview Channel: 2022年4月以降 Visual Studio 2019 の Preview Channel は更新されなくなるため Release Channel か Visual Studio 2022 Preview への移行を推奨

.NET Framework February 2022 Security and Quality Rollup - .NET Blog

https://devblogs.microsoft.com/dotnet/net-framework-february-2022-security-and-quality-rollup/

.NET Framework の2022年2月のセキュリティーと品質ロールアップ更新がリリースされた。

GC の稀にクラッシュする不具合と WPF の不具合がいくつか修正されている。

Plan for NuGet in 2022 · Issue #11571 · NuGet/Home

https://github.com/NuGet/Home/issues/11571

NuGet の .NET 7 に向けてのプランについての Issue。

パッケージバージョンの一元管理のようなツーリングに関するものや、ギャラリーでの TFM 互換性表示などがトップリクエストとして上がっている。

Rider 2022.1 Roadmap | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2022/02/09/rider-2022-1-roadmap/

Rider 2022.1 のロードマップについての記事。

ゲーム開発の強化、パラレルスタック、Docker "Fast Mode"、ツールバーのカスタマイズと強化、バージョン管理での diff、エディターの強化、Code With Me でのリモート開発などがあげられている。

ReSharper 2022.1 Roadmap | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2022/02/09/resharper-2022-1-roadmap/

ReSharper 2022.1 のロードマップについての記事。

一般的な機能強化とバグ修正 、Entity Framework Select N+1 Analysis、Visual Studio 2022 との相互運用の改善、ローカリゼーションマネージャーでの Google 翻訳、エンドポイントの検出機能の強化、プロファイラの更新が含まれるとしている。

dotnet Community / Twitter

https://twitter.com/i/communities/1488624124817666051

Twitter の .NET に関するトピックの Community が作成された。

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

【C# 11候補】 ref field | ++C++; // 未確認飛行 C ブログ

https://ufcpp.net/blog/2022/2/ref-field/

C# 11 / .NET 7 で導入を目指す、参照を持つことのできる ref フィールドについての記事。

Background process with Hangfire and .NET 6

https://arslanmurat06.github.io/posts/hangfire/

バックグラウンド処理に Hangfire を使用する方法と簡単な利点についての記事。

.NET 6.0 にアップグレードすると ReadyToRun ビルドが失敗するようになったのを直す - しばやん雑記

https://blog.shibayan.jp/entry/20220212/1644602915

.NET 6 で変更された ReadyToRun (部分的 AOT) のビルドと発行についての記事。

ReadyToRun のビルドと発行を --no-restore で行う場合には dotnet restore 時にも明示的に PublishReadyToRun を指定する必要がある。

Creating and Using HTTP Client SDKs in .NET 6

https://www.infoq.com/articles/creating-http-sdks-dotnet-6/

HTTP クライアント SDK を作る上でのポイントを解説している記事。

HttpClient のカスタムや IHttpClientFactory との統合、拡張性やテストについて。Refit や NSwag を使用した実装についても触れている。

ASP.NET Core で素の認証に時間ベースの2段階認証を追加する

https://zenn.dev/karuakun/articles/4943d2a2d14419

ASP.NET Core Identity を使用していない ASP.NET Core アプリケーションに時間ベースの二要素認証 (TOTP) を導入する方法についての記事。

Writing native WinDbg extensions in C#

https://minidump.net/writing-native-windbg-extensions-in-c-5390726f3cec

ClrMD と NativeAOT を使用して WinDbg の拡張を実装する記事。

NativeAOT を使用することでネイティブライブラリーとして出力して、WinDbg に拡張として読み込ませている。

Vulnerabilities due to XML files processing: XXE in C# applications in theory and in practice

https://dev.to/_sergvasiliev_/vulnerabilities-due-to-xml-files-processing-xxe-in-c-applications-in-theory-and-in-practice-3a67

.NET での XML外部実体攻撃についてと、BlogEngine.NET での実例を紹介した記事。

A JavaScript Rules Engine in .NET 6

https://blog.devgenius.io/a-javascript-rules-engine-in-net-6-fb092cdc44c

Jint を使用してユーザー定義による JavaScript のルールエンジンを実装する方法についての記事。

Unix Domain Sockets in .NET 6 — Basics and Real-World Examples

https://fzankl.medium.com/unix-domain-sockets-in-net-6-basics-and-real-world-examples-8982898ab293

UNIX ドメインソケットを使用して通信する方法についての記事。

ASP.MET Core での使用をはじめ、HttpClient や gRPC での使用などを紹介している。

.NET で parallel unit test

https://zenn.dev/masakura/articles/f6d3144492ec59

ユニットテストを並列で実行する方法についての記事。

NUnit と xUnit での方法とそれぞれの違いについて触れている。

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

NetEscapades.EnumGenerators: a source generator for enum performance

https://andrewlock.net/netescapades-enumgenerators-a-source-generator-for-enum-performance/

Enum に関する拡張メソッドを生成する Source Generator の紹介記事。

あらかじめ文字列や switch などを生成しておくことで ToString や IsDefined 相当の機能を高速に行えるようにできる。

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

ツイート

SQLitePCLRaw のプレリリース版を使用すると Blazor WebAssembly で SQLite を使用できるようになったという話。

Orleans のドキュメントが docs.microsoft.com で閲覧できるようになったという話。

Deep Dive

Add default method support to virtual statics by davidwrighton · Pull Request #64717 · dotnet/runtime

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

Initial roll out of !! by stephentoub · Pull Request #64720 · dotnet/runtime

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

C# 11 のパラメーター null チェック !! をコアライブラリーに導入するという PR。

Streamline bool.TryParse/Format by stephentoub · Pull Request #64782 · dotnet/runtime

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

Boolean の TryParseFormatChar を使用する代わりに数値をバイト列のようなものとして直接書き込んだり比較することで高速化するという PR。例えば True は UTF-16 のバイト列を Int64 (リトルエンディアン) で表現すると 0x65007500720054 となるので、それを書き込んだり比較したりする。

Improve vectorization of String.Split by yesmey · Pull Request #64899 · dotnet/runtime

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

String.Split をベクトル化 (SIMD) で高速化するという PR。

Proposal: Remove Maui's Dependency on Extensions.Hosting · Issue #4393 · dotnet/maui

https://github.com/dotnet/maui/issues/4393

MAUI のアプリケーションの依存から Microsoft.Extensions.Hosting を外すという PR。 背景としてはモバイルアプリケーションのようなものをターゲット向けの機能ではないこと、依存によるサイズを減らすこと、起動時間の短縮などがあげられている。

Support raw UTF8 String Literals by AlekseyTs · Pull Request #59390 · dotnet/roslyn

https://github.com/dotnet/roslyn/pull/59390

UTF-8 文字列リテラルのサポートを追加する PR。