トピックス
Announcing .NET Aspire Preview 2 - .NET Blog
https://devblogs.microsoft.com/dotnet/announcing-dotnet-aspire-preview-2/
.NET Aspire Preview 2 がリリースされた。
Dashboard の各種ビューの改善やコンテナー実行時の構成カスタマイズ性の向上、MySQL や MongoDB といったコンポーネントの追加など様々な改善が含まれている。
Introducing OpenSilver 2.0 - OpenSilver
https://opensilver.net/announcements/2-0/
OpenSilver 2.0 がリリースされた。
このリリースでは Visual Basic .NET のサポート、Blazor や React, Angular との統合、デザインタイムライブ XAML プレビュー、拡張レイアウトシステムのサポート、WebView ベースのより高速なシミュレーター、様々なパフォーマンス改善といったものが含まれている。
Release WCF 8.0 · dotnet/wcf
https://github.com/dotnet/wcf/releases/tag/v8.0.0-rtm
WCF Client 8.0 がリリースされた。
このリリースでは構成名を受け取る API が削除された以外の大きな変更はないものの、クライアントサポートポリシーとしてリリースから3年(2026年まで)のサポートが提供される。前バージョンの WCF Client 6.0 のサポート終了は2024年11月までとなっている。
Release 2.3.3 · mysql-net/MySqlConnector
https://github.com/mysql-net/MySqlConnector/releases/tag/2.3.3
MySQL Connector for .NET 2.3.3/2.3.2 がリリースされた。
このリリースではスキーマのサポート強化やいくつかの不具合の修正が含まれている。
ReSharper and Rider 2023.3.2 – Bug Fixes Have Landed! | The .NET Tools Blog
https://blog.jetbrains.com/dotnet/2023/12/20/resharper-and-rider-2023-3-2-bug-fix/
ReSharper / Rider 2023.3.2 がリリースされた。
このリリースでは ReSharper と Rider ともに 2023.3 リリース以降の様々な不具合が修正されている。
WPFUI collaboration for Win11 Theming · dotnet/wpf · Discussion #8533 · GitHub
https://github.com/dotnet/wpf/discussions/8533
WPF に Windows 11 の Fluent UI テーマを持ち込むため、WPFUI とのコラボレーションを行うというアナウンス。
What's New in Our Code Coverage Tooling? - .NET Blog
https://devblogs.microsoft.com/dotnet/whats-new-in-our-code-coverage-tooling/
コードカバレッジツール (Microsoft.CodeCoverage) の新機能について。
静的インストルメンテーションでのすべてのプラットフォームのサポート、新しいレポート形式のサポート、 dotnet-coverage コマンドの導入、ソリューションの自動マージ、パフォーマンスの改善など。
Advent Calendar 2023
- C# Advent Calendar
- neue cc - ZLogger v2 による .NET 8活用事例 と Unity C# 11対応の紹介
- UnsafeAccessorでprivateメソッドをテストしよう - Qiita
- UntiyからC#を始めたぼくのIEnumerator - Kakoのいろいろやったこと記
- C#(.NET)で Min-Max 正規化 - Qiita
- LINQ - Python チートシート
- StrideでBepuPhysicsを物理エンジンとして使う - Qiita
- async/awaitは今後もベストフレンドであり続けるか - hadashiA
- USBカメラを使ってみよう - Qiita
- 機械学習の専門知識がなくてもC#+ML.NETで高性能なAIが作成できるAutoMLを試してみた - Qiita
- Mono.Cecilでは ".s" 命令にご用心
- Microsoft.Extensions.ObjectPoolを使ってみる
- C#で作る。組み込み用GUIアプリ通信方法について - Qiita
- ジェネリクスツリーで、可変長構造体っぽいことをする🌳 - Qiita
- EF Coreのクエリ式 - Qiita
- mex のライブラリ化 - Qiita
- C# ではじめる OpenTelemetry。 - ねののお庭。
- Blazor Advent Calendar
- "ゲームなどでよく見る「長押しのボタン」のUIをWEBで表現してみた" を Blazor で実装してみた - Qiita
- プラモの写真を光らせたい x Blazor WebAssembly x OpenCV - koudenpaのブログ
- Blazor WebAssembly で作った Web アプリ "snow catch" ゲームを、🎙️ボイスコマンド (音声認識) で操作できるようにする - Qiita
- Blazor WebAssembly アプリを .NET 8 の Auto レンダーモードに移行したら InvalidOperationException で動作しない - Qiita
- Blazor でも View Transition したい - Qiita
- Blazor Server で Scoped なサービスに状態保存してたら、.NET 8 の新しい Render Mode では危ないかもね、という話 - Qiita
- Blazorアプリで2年間放置していたコードの警告と向き合います - Qiita
- Blazor - サーバーで実行されているのかブラウザで実行されているのかを判別する方法 - Qiita
- Blazor in .NET 8 の Auto レンダーモードは、.wasm ダウンロード済みでも、WebAssembly モードで動作しない場合がある - Qiita
- 軽量かつ高機能なHAVIT Blazorを使ったBlazor開発 - Qiita
- [改訂版] Blazor でラジオボタン input 要素に双方向データバインドする方法 - Qiita
- その他
- C# と YouTube API を使って VTuber の配信の流行を調べてみる - Qiita
- [C#]asyncを利用してCPUバウンドな処理を呼び出すと、スレッドは分散しない
- C# + xUnitのプロジェクトでユニットテストの結果とテストカバレッジ率をレポートに出力させる。 - Qiita
- SQL CLR と CData ADO.NET Provider を使って、SQL Server から直接kintone にアクセスする - Qiita
- Roslyn API でフィールドとプロパティの型と名称を取得する - Qiita
- 【C#】In-Place Merge Sort を実装してみた
- Roslyn API でサマリータグのコメントの一行目だけを取得する - Qiita
アーティクル、スライドなど
actix-webでBlazor WebAssemblyをホストする - Qiita
https://qiita.com/TellMin/items/9e7f1e576a195103aa92
Rust の actix-web フレームワークで Blazor WebAssembly アプリケーションをホストする方法について。
.NET Aspireを試してみた - Qiita
https://qiita.com/hydrangeas/items/b87bd39843eee0633cb0
.NET Aspire のプロジェクトを作成し、構成やロギングなどを触ってみた記録。
.NET 8のプロセス間通信には、gRPCのパイプ通信が優秀なようです - Qiita
https://qiita.com/spc_ksudoh/items/760a41a73c825eb70e70
プロセス間通信の方法として名前付きパイプによる gRPC を使用するメリットとその実装方法について。
String Interning - To Use or Not to Use? A Performance Question
https://sergeyteplyakov.github.io/Blog/benchmarking/2023/12/10/Intern_or_Not_Intern.html
String.Intern のパフォーマンスについて。記事では NativeAOT で実行した場合との差についても触れている。
A Year in Recap: Celebrating this years milestones
https://avaloniaui.net/Blog/a-year-in-recap-celebrating-this-years-milestones
Avalonia の2023年の振り返り記事。
Semantic Kernelのプロンプトをファイルに書く
https://zenn.dev/tomokusaba/articles/379d39dc225b88
Semantic Kernel で使用するプロンプトを外部ファイルに記述しておき、呼び出す方法について。
【C#】初心者におすすめ!コードアナライザーを使おう!【.NET】
https://zenn.dev/inuinu/articles/c60abf13d5f47a
アナライザーの使用方法についての解説。組み込みのアナライザーの紹介やアナライザーの抑制方法、Roslynator などのサードパーティーアナライザーの紹介など。
Announcing the HackTogether: The Great .NET 8 Hack Winners - .NET Blog
https://devblogs.microsoft.com/dotnet/great-dotnet-8-hack-winners/
The Great .NET 8 Hack イベントの受賞者の発表。
- 総合: NASA TechPort Headlines
- ベスト AI: Betakads
- ベストクラウドネイティブ: AI Counselor
Semantic Kernelのプロンプトのテンプレート化
https://zenn.dev/tomokusaba/articles/a403d9ec250ec8
Semantic Kernel でプロンプトをテンプレート関数化して呼び出す方法について。
GitHub Codespaces Semantic Kernel v1.0.1 handson
https://zenn.dev/ymd65536/articles/semantic_kernel_v101_handson
Semantic Kernel v1.0.1 を GitHub Codespace と Azure OpenAI で実行するためのセットアップ手順。
Updates to the StronglyTypedId library - simplification, templating, and CodeFixes: Using strongly-typed entity IDs to avoid primitive obsession - Part 8
https://andrewlock.net/updates-to-the-stronglytypedid-library/
StronglyTypedId ライブラリを再設計し、テンプレート化などの対応を行ったことについて。
.NET 8.0 を WSL2 Ubuntu にインストールする
https://zenn.dev/yukiko_bass/articles/e6f9f22da5f15e
WSL2 の Ubuntu 22.04 に .NET 8 をインストールする手順について。
Naming Made Easy: AI-Powered Rename Suggestions - Visual Studio Blog
https://devblogs.microsoft.com/visualstudio/ai-powered-rename-suggestions/
Visual Studio Preview でサポートされた GitHub Copilot を使用した識別子のリネームサジェスト機能の紹介。
.NET 8 の Blazor Web App で MudBlazor を使う
https://zenn.dev/tetr4lab/articles/74bd50585434ab
.NET 8 の Blazor Web App で .NET 8 正式対応前の MudBlazor を利用する手順について。
Integrating OpenAI Image Generation into a .NET Application
OpenAI の画像生成 API を .NET から利用する方法やその簡単なラッパーライブラリーの紹介。
Revisiting WASM for F#
https://dev.to/tunaxor/revisiting-wasm-for-f-38c1
F# を Blazor WebAssembly で使用する上でのライブラリーや JavaScript との相互運用について。
Semantic KernelのFunctionを自動的に選択して回答を返すSemantic Kernel1.0.1正式版
https://zenn.dev/tomokusaba/articles/e667217a2045cc
Semantic Kernel でカスタムの Function を自動的に選択する実装方法について。
Unlocking the Secrets of Managed Memory: Dive into Event Handler Leak Insights! - Visual Studio Blog
Visual Studio 17.9 Preview 1 で導入された新しいメモリー分析機能の紹介。
この機能によってイベントハンドラーのオブジェクトリークを素早く見つけることが可能となるとのこと。
.NET CoreでWindowsとLinuxでTimeZoneのIDが異なる
https://zenn.dev/ynug/articles/dot-net-time-zone
Windows と Linux などプラットフォームごとにタイムゾーンの ID が異なることその対処について。
.NET 8からはLibraryImportAttributeで使うSafeHandle型のコンストラクタをpublicにしよう - プログラム系統備忘録ブログ
https://tan.hatenadiary.jp/entry/2023/11/23/015139
.NET 8 では LibraryImportAttribute で宣言された外部ライブラリーの呼び出しに使用している SafeHandle 型はコンストラクターを public にする必要がある変更について。
記事ではどのように生成されるコードが変更され、必要となった理由と経緯などにも触れている。
Fukuoka.NET Conf 2023 - connpass
https://fukuten.connpass.com/event/303390/
福岡での .NET Conf 2023 ローカルイベント。2024年2月3日(土)に開催。
HttpContext Issues with Azure SignalR Service
https://dev.to/1kevgriff/httpcontext-issues-with-azure-signalr-service-21d0
Azure SignalR Service では HttpContext を利用できないという固有の特性があり、問題となる場合があることについて。
NUnit4の新しい非同期アサートを試してみる
https://zenn.dev/tomokusaba/articles/890091dd520f08
NUnit 4 での非同期アサートについての紹介。
Azure OpenAI Service の JSON モードと tools を .NET SDK で使ってみよう
https://zenn.dev/microsoft/articles/aoai-tools-jsonmode-in-dotnet
Azure OpenAI Service の JSON モードと tools プロパティーを .NET 向けの SDK から利用する方法について。
最新の React-TypeScript SPA テンプレートを .NET 8 で試してみよう | ドクセル
https://www.docswell.com/s/shosuz/Z4QRL8-2023-11-25-172313
.NET 8 で新しくなった React と ASP.NET Core を組み合わせる SPA テンプレートについての紹介。
お客様、そこは秘孔です!突かないでください! HTTP/2 Rapid reset の概要と対策
https://speakerdeck.com/murachiakira/2-rapid-reset-nogai-yao-todui-ce
HTTP/2 Rapid Reset 攻撃についての解説。
.NET 8世代のBlazorについて
https://speakerdeck.com/tomokusaba/dot-net-8shi-dai-noblazornituite
.NET 8 の Blazor のホスティングモデルの変更点などの簡単な解説。
C# ではじめる OpenTelemetry
https://speakerdeck.com/nenonaninu/c-number-dehazimeru-opentelemetry
OpenTelmetry についての紹介から、ASP.NET でのサポートと使い方、SignalR でのトレースなど。
.NET Conf Recap Japan/Night Party
- GitHub - ufcpp/DotNetConf2023Recap: .NET Conf 2023 Recap Japan 「開発ツールの最新アップデート」向け
- .NET Night Party@品川
- .NET Night Party@品川 ライブコーディング対決
- .NET Night Party@品川 ライブコーディング対決 IF Blazor Appsテンプレだったら?
ライブラリ、リポジトリ、ツールなど
GitHub - SwissLife-OSS/snapshooter: Snapshooter is a snapshot testing tool for .NET Core and .NET Framework
https://github.com/SwissLife-OSS/snapshooter
.NET でのスナップショットテストを行うためのライブラリー。
GitHub - sator-imaging/docfx-pages: Deploy docfx API Reference to GitHub Pages with only 1 Action
https://github.com/sator-imaging/docfx-pages
docfx を使用して API リファレンスを GitHub Pages にパブリッシュする GitHub Action。
GitHub - timonkrebs/MemoizR: Declarative Structured Concurrency for C#
https://github.com/timonkrebs/MemoizR
Sekiban - Event Sourcing and CQRS Framework - Home
Azure Cosmos DB や AWS Dynamo DB を使用する C# によるイベントソーシングフレームワーク。
- GitHub - J-Tech-Japan/Sekiban: Sekiban - Event Sourcing and CQRS Framework using C#. It can store data into Azure Cosmos DB or AWS Dynamo DB
- 株式会社ジェイテックジャパン、C#によるイベントソーシングフレームワーク「Sekiban」をオープンソースソフトウェアとして公開
サイト、ドキュメントなど
ツイート
ターゲット型によるコレクションリテラルで生成されるコードの違い。
Collection literals are trickier then you might think (in a good sense).
— Sergiy Teplyakov 🇺🇦 🇺🇸 (@STeplyakov) December 20, 2023
Initialization logic is quite smart. For lists it relies on new CollectionsMarshal API and uses the span to fill the list in a very efficient way.
Its way more efficient than collection initializers! pic.twitter.com/e3ypnpKGay
async/await の歴史のはなし。
Lord what is this.
— Don Syme (@dsymetweets) December 14, 2023
Some of the **actual** history, peer-reviewed, is in https://t.co/KqDJF5ifyx. As indicated there that only touches on the many strands of prior history.
I have massive respect for @dsymetweets and I want to make sure credit (even more credit) is given where it is due, F# created async workflows that heavily influenced C#'s async/await design.
— David Fowler (@davidfowl) December 15, 2023
DebuggerDisplay 属性の Name プロパティーを使うことでインデックスの代わりにキーを表示できるという話。
Trick is to define custom type with DebuggerDisplay attribute and using Name for the key. Sep uses this too in the SepReader.Row. 👇https://t.co/mcVv8h5fJV#dotnet https://t.co/ry3OzenqLt pic.twitter.com/60jK9tnufS
— nietras 👾 (@nietras1) December 18, 2023
NativeAOT 上で Mono のインタープリターを動かす試み。
NativeAOT/LLVM is getting some attention recently. There were experiments with NativeAOT on Android with Jave interop. I did, however, miss that there was also attempt to mix MonoVM interpreter with NativeAOT: https://t.co/Ap74G4beba 😶
— Filip Navara 🇺🇦 (parody of myself) (@filipnavara) December 13, 2023