トピックス
.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
旧バージョンの 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
.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 相当の機能を高速に行えるようにできる。
サイト、ドキュメントなど
ツイート
Using #SQLite in #Blazor #WebAssembly just got easier: It's built into SQLitePCLRaw's latest prerelease! Try it today with amazing libraries like #EFCore, sqlite-net, Dapper, and Akavache and let me know how it goes. pic.twitter.com/wgMOQgfWVk
— Brice Lambson🦄 (@bricelambs) February 8, 2022
SQLitePCLRaw のプレリリース版を使用すると Blazor WebAssembly で SQLite を使用できるようになったという話。
Orleans docs are now available on https://t.co/6x90XhJWXM! https://t.co/ANZWt41AZV
— Microsoft Orleans (@msftorleans) February 9, 2022
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 の TryParse
や Format
で Char
を使用する代わりに数値をバイト列のようなものとして直接書き込んだり比較することで高速化するという 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。