トピックス
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 ランタイムでの不具合の対応などが含まれている。
The Developer Ecosystem in 2023: Key Trends for C# | The .NET Tools Blog
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
.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
デスクトップアプリケーションに最小の 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 に流すためのライブラリー。
OpenTelemetry を SignalR でも有効活用するためのライブラリをリリースしました!とりあえずトレースだけはできるようにしたのですが、順次いろいろなメトリクス計測できるようにアップデートしていきます...!https://t.co/C11Q0fcox2
— 何縫ねの。 (@nenoMake) November 30, 2023
Debug Output Filter - Visual Studio Marketplace
https://marketplace.visualstudio.com/items?itemName=GrantDavies.NiahTextFilter2022
デバッグ出力の履歴やフィルタリングを行える Visual Studio 拡張。
サイト、ドキュメントなど
ツイート
Avalonia XPF (Avalonia によるクロスプラットフォーム WPF 互換キット) を使って PerfView をブラウザーで動かせた、という話。
Many of you have been curious about Avalonia XPF in the browser.
— Avalonia UI (@AvaloniaUI) November 28, 2023
Good news! We're on track for private previews next year. 🌟
For now, enjoy this sneak peek: Microsoft's PerfView running in the browser! 🚀 pic.twitter.com/5KmSOMfJ9j
空のクラスやインターフェースを定義する際に ;
でボディーなしで宣言できて便利という話。
There's a small new little feature in C# 12 that I think most didn't notice. You can now declare empty class, record and interface types without specifying a body at all, just with a semicolon token. It's not even called out in the docs, I should go update them 😄#csharp #dotnet pic.twitter.com/Vsjxld9lZt
— Sergio Pedri (@SergioPedri) November 30, 2023
プロファイリングする際に、アプリを起動時にはプロファイリングを一時停止するという機能について。
🛠️ Introducing the "start-pause" feature in application profiling—launch your app without immediate data collection for seamless game development experiences! 🎮 Resume data collection with a click. Compatible with both native and managed projects.#vsdebuggertip #VS2022 17.9 P1 pic.twitter.com/Py6LqdMqMv
— Visual Studio Debugger (@VS_Debugger) December 1, 2023
Ghidra のスクリプトで Native AOT の String 検索ができるようにしたという話。
Ever tried #reversing #dotnet binaries compiled with #nativeaot? I decided to publish some of my (hacky) #ghidra scripts that may help you out with mundane tasks like finding strings.
— Washi (@washi_dev) November 16, 2023
👉https://t.co/BRU8EyeTq0
The scripts could probably use some work but at least it's a start😃 pic.twitter.com/QrSWnu5Tgw
PolySharp で C# 12 の新しい polyfill が利用できるようになったという話。
Just released a new version of PolySharp w/ new polyfills to make it super easy to leverage C# 12 features downlevel! Just enable C# 12 in your .NET Standard, .NET Framework, UWP, etc. project and have fun with all the new cool features! 🎉#dotnet #csharphttps://t.co/ZuhYzUgip0 pic.twitter.com/A1emi4WLUM
— Sergio Pedri (@SergioPedri) November 29, 2023
[InlineArray]
の最大値は 1MB
TIL: Overall size of a structure marked b
— Hypeartist (@hypeartistmusic) November 24, 2023
with [InlineArray] is limited to 1mb#csharp #dotnet pic.twitter.com/DgChywaCzq
Deep Dive
[API Proposal]: Introduce new memory cache library · Issue #4766 · dotnet/extensions
https://github.com/dotnet/extensions/issues/4766
RCache というメモリー効率の良い新しいメモリーキャッシュを導入したいという提案。