2023-12-06: C# Advent Calendar, NUnit 4.0.1, ML.NET 3.0

Published on Wednesday, 06 December 2023

トピックス

C#のカレンダー | Advent Calendar 2023 - Qiita

https://qiita.com/advent-calendar/2023/csharplang

2023 年の C# Advent Calendar が現在進行中。

NUnit 4.0.1 | Framework Release | NUnit Docs

https://docs.nunit.org/articles/nunit/release-notes/framework.html#nunit-401---december-2-2023

NUnit 4.0.0/4.0.1 がリリースされた。

TestCaseSource の非同期対応、.NET 6 ターゲット対応、テストのキャンセル(CancelAfter) など多くの改善や修正が含まれている他、.NET Framework 3.5, 4.0, 4.5, .NET Core 2.1 といったターゲットの削除も行われている。

Announcing ML.NET 3.0 - .NET Blog

https://devblogs.microsoft.com/dotnet/announcing-ml-net-3-0/

ML.NET 3.0 がリリースされた。

このリリースでは物体検出 API、質問応答(QA)と固有表現抽出(NER)、Intel oneDAL ハードウェアトレーニングアクセラレーション、AutoML の改善、DataFrame のアップデート、Tensor プリミティブの統合などが含まれる。

Release v2.5.140 · MessagePack-CSharp/MessagePack-CSharp

https://github.com/MessagePack-CSharp/MessagePack-CSharp/releases/tag/v2.5.140

MessagePack v2.5.140 がリリースされた。

このリリースでは Mono ランタイムでの不具合の対応などが含まれている。

https://blog.jetbrains.com/dotnet/2023/11/30/the-developer-ecosystem-in-2023-key-trends-for-csharp/

JetBrains による C# 開発者のエコシステムのトレンド調査結果。

ASP.NET Core で利用している機能、C# バージョン、開発対象、IDE やエディタ、プラグインの使用状況など。

The ReSharper 2023.3 Release Candidate Is Now Available | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2023/11/29/the-resharper-2023-3-rc/

ReSharper 2023.3 Release Candidate がリリースされた。

AI アシスタントの強化、C# 12 のサポート、Entity Framework 関連の調査とダイアグラム、UI の改善、Razor のフォーマットエンジンの刷新、ユニットテストの AI 生成、新しい文法およびスペルチェッカーなど。

The Rider 2023.3 Release Candidate Is Now Available | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2023/11/29/the-rider-2023-3-rc/

Rider 2023.3 Release Candidate がリリースされた。

AI アシスタントの強化、C# 12 および F# 8 を含む .NET 8 SDK のサポート、複数プロジェクトのスタートアップの改善、型の依存関係ダイアグラム、予測デバッグ、ユニットテストの AI 生成など様々な新機能を含む。

Six Labors : Announcing ImageSharp 3.1.0

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

ImageSharp 3.1.0 がリリースされた。

このリリースではアニメーション WebP や PNG のサポート、Quite Ok (Qoi) のサポート、デコーダーの信頼性の向上、各種パフォーマンスの向上。

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

Blazor Web App でOAuth認証を最小規模で使う (ASP.NET Core 8.0)

https://zenn.dev/tetr4lab/articles/1946ec08aec508

.NET 8 の Blazor Web App で Google OAuth 認証を実装する方法について。

BitmapSourceからBitmapへ変換するベストプラクティス

https://zenn.dev/nuits_jp/articles/2023-12-03-convert-bitmapsource-to-bitmap

WPF において BitmapSource から Bitmap へ変換する方法として良い方法の紹介。

【Mac不要】.NET MAUI 製 iOS アプリを iPhone に手軽にデバッグ配備する手順 - Qiita

https://qiita.com/kami_teru/items/b2a6bd77f7c836ae3d1e

Windows のみで Visual Studio から .NET MAUI 製の iOS アプリを iPhone 等の実機でデバッグ実行する方法について。

.Net8のBlazor WASMでASP.Net Core Hostedの構成を作る方法

https://zenn.dev/vigilanteyu/articles/d7a47dff63e8e2

.NET 7 まであった Blazor WebAssembly の ASP.NET Core Hosted 相当の構成を .NET 8 でも実現する方法について。

Visual Basic 2023年振り返り - Qiita

https://qiita.com/yaju/items/97c7d6ae94a303bdbb5b

今年の Visual Basic .NET を含めた Visual Basic に関するトピックのまとめ。

Storing local data in a .NET MAUI Blazor Hybrid App using IndexedDB - Part 1

https://dev.to/icebeam7/storing-local-data-in-a-net-maui-blazor-hybrid-app-using-indexeddb-part-1-3hn2

.NET MAUI Blazor Hybrid アプリで IndexedDB を使用してローカルデータを保存する方法について。

ImageMagickとImageSharpとSystem.Drawingの性能評価してみた

https://zenn.dev/nuits_jp/articles/2023-12-01-imagemagic-imagesharp-benchmarks

画像を操作するライブラリーの Magick.NET (ImageMagick) と ImageSharp と System.Drawing の性能の比較。 記事ではデコード、クロップ、二値化の処理を .NET Framework と .NET 8 で比較している。

How .NET 8.0 boosted AIS.NET performance by 27% | endjin

https://endjin.com/blog/2023/11/how-dotnet-8-boosted-ais-dotnet-performance-by-27-percent-for-free

AIS デコーダー (AIS は船舶の無線メッセージ) を解析するライブラリーである AIS.NET を .NET 8 で実行した場合にパフォーマンスが大きく改善されたことについて。

My favorite features in Visual Studio 17.8 - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/my-favorite-features-in-visual-studio-17-8/

Mads Kristensen 氏のおすすめする Visual Studio 2022 version 17.8 の新機能の紹介。

記事では大文字小文字を維持したままの検索と置換、リッチな Pull request 体験といった機能を紹介している。

Behind [LogProperties] and the new telemetry logging source generator

https://andrewlock.net/behind-logproperties-and-the-new-telemetry-logging-source-generator/

.NET 8 と共に提供された Microsoft.Extensions.Telemetry.Abstractions にふくまれる、ログにプロパティーの値を残す LogProperties 属性についての解説。

【Allって】LINQ、この場合どうなる?【空配列は?】 - Qiita

https://qiita.com/RyotaMurohoshi/items/bf45f4e7d52e6aad8ef7

C# Advent Calendar 2023 の1日目の記事。LINQ の All を空の配列に対して実行した場合の結果や、同点となる要素がある場合の OrderBy の結果などのコーナーケースを解説。

VSCode で C# のブロック

https://aquasoftware.net/blog/?p=1975

C# Advent Calendar 2023 の2日目の記事。C# のコードフォーマット設定でブレースの前後の開業を設定する方法について。

The Rise of C# Markup for Cross Platform Development

https://platform.uno/blog/the-rise-of-c-markup-for-cross-platform-development/

Uno Platform の C# での UI 記述方法である C# マークアップについての紹介。

Hot Reload for C# Dev Kit

https://www.poppastring.com/blog/hot-reload-for-c-dev-kit

Visual Studio Code の拡張 C# Dev Kit で実験的機能の Hot Reload を有効にする方法について。

OmniSharp-Vim で IDE0001 などのコードスタイルの分析結果を表示する - Qiita

https://qiita.com/lx-sasabo/items/4ceb7be5e2721e4e52f8

OmniSharp-Vim で Analyzer 等のコード解析結果を表示する方法について。

.NET 8 の Blazor の静的 サーバー レンダリング (SSR) で JavaScript を使う方法

https://zenn.dev/microsoft/articles/aspnetcore-blazor-dotnet8-jsinterop

.NET 8 の Blazor で静的サーバーレンダリング (SSR) を使用した際にカスタムな JavaScript を実装、実行する方法について。

.NET の HttpClient の Timeout は何の時間切れを指しているのか | @jsakamoto

https://devadjust.exblog.jp/29756261/

HttpClient に設定できる Timeout が実際にはどのように作用するのかについての解説。

Embedding a minimal ASP.NET Web Server into a Desktop Application

https://weblog.west-wind.com/posts/2023/Nov/27/Embed-a-minimal-ASPNET-Web-Server-into-a-Desktop-Application

デスクトップアプリケーションに最小の ASP.NET Core サーバーを組み込む方法について。

【C#】FakeTimeProvider と FakeLogger を試す - てくメモ

https://aneuf.hatenablog.com/entry/2023/11/27/210000

.NET 8 で導入された ITimeProvider の Fake 実装となる FakeTimeProvider と新たに導入された ILogger の Fake 実装となる FakeLogger についての紹介。

【C#】コレクション式 : 独自型でコレクション式を使ってみる (CollectionBuilder 属性) - てくメモ

https://aneuf.hatenablog.com/entry/2023/11/24/210000

C# 12 のコレクション式を独自型で実現する CollectionBuilderAttribute とそれを使用した実装方法について。

【C#】Dependency Injection(依存性の注入)とは - Annulus Games

https://annulusgames.com/blog/dependency-injection/

Dependency Injection についての解説。サービスロケーターとその問題点、 DI コンテナーとして Microsoft.Extensions.DependencyInjection を例にした各種例、.NET/Unity 向けの M.E.DI 以外の DI コンテナーの紹介など。

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

thomhurst/ModularPipelines: Write your pipelines in C# !

https://github.com/thomhurst/ModularPipelines

モジュールを組み合わせて何らかの処理/作業をパイプラインを作るフレームワーク。

nenoNaninu/AspNetCore.SignalR.OpenTelemetry: This is an Instrumentation Library, which instruments ASP.NET Core SignalR and collect metrics and traces about SignalR hub method invocations.

https://github.com/nenoNaninu/AspNetCore.SignalR.OpenTelemetry

SignalR のメトリックを OpenTelemtry に流すためのライブラリー。

Debug Output Filter - Visual Studio Marketplace

https://marketplace.visualstudio.com/items?itemName=GrantDavies.NiahTextFilter2022

デバッグ出力の履歴やフィルタリングを行える Visual Studio 拡張。

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

ツイート

Avalonia XPF (Avalonia によるクロスプラットフォーム WPF 互換キット) を使って PerfView をブラウザーで動かせた、という話。

空のクラスやインターフェースを定義する際に ; でボディーなしで宣言できて便利という話。

プロファイリングする際に、アプリを起動時にはプロファイリングを一時停止するという機能について。

Ghidra のスクリプトで Native AOT の String 検索ができるようにしたという話。

PolySharp で C# 12 の新しい polyfill が利用できるようになったという話。

[InlineArray] の最大値は 1MB

Deep Dive

[API Proposal]: Introduce new memory cache library · Issue #4766 · dotnet/extensions

https://github.com/dotnet/extensions/issues/4766

RCache というメモリー効率の良い新しいメモリーキャッシュを導入したいという提案。