トピックス
Building AI-powered Microsoft Copilot with SignalR and other open-source tools - .NET Blog
SignalR とその他オープンソースツールを使用して構築した Microsoft Copilot についての解説。
- SignalR を使用した低レイテンシーな通信チャネルを確立
- アダプティブカードと Markdown を使用した UI の記述
- アプリケーションのフロー
- Deep dive: SignalR をどのように使用しているか
Deep dive ではメッセージごとに SignalR の接続を使用している(再利用しない)理由や、すべてのメッセージを送信している理由、object-basin を使用したオブジェクトの部分更新などについて解説している。
Microsoft Office's RTC (Real-Time Channel) migration to modern .NET - .NET Blog
https://devblogs.microsoft.com/dotnet/office-rtc-dotnet-migration/
Microsoft Office のリアルタイムチャンネル (RTC) をモダン .NET に移行したことについての事例解説。
Office アプリケーションのリアルタイムコラボレーションで使用されている WebSocket (SignalR) ベースのサービスを .NET Framework 4.7.2 から .NET に移行した事例について解説している。
移行した結果として「CPU の 30% の削減」「VM の原価の 30% 削減」「メモリーと GC 時間の 60% の削減」「主な API のレイテンシーの 50% 低下」といった効果があったとしている。
移行には ASP.NET の HTTP モジュールとハンドラーのマイグレーション、ASP.NET SignalR と ASP.NET Core SignalR の互換性の担保といった課題がありそれぞれミドルウェアで対応したことや、移行後に発生した IIS の CPU 利用率が高い問題や SignalR Core の CPU 使用率が高い問題とそれらの対処について解説されている。
そのほかイベントカウンターによるメトリックの追跡、プロダクションへのロールアウトの結果、今後の展望について書かれている。
Uno Platform 5.1 : Live Wizard for Rider & VS Code users, New Controls, Perf improvements and more.
https://platform.uno/blog/uno-platform-5-1/
Uno Platform 5.1 がリリースされた。
このリリースでは Rider や Visual Studio Code ユーザー向けに新規プロジェクトを作成する dotnet new
コマンドを生成するウィザードが用意されたほか、TimePicker コントロールの導入やパフォーマンスの向上、.csproj のフットプリント削減、Uno Toolkit のアップデートと Uno Extensions の .NET 7 のサポートの削除などが含まれる。
Introducing the MSTest Runner - CLI, Visual Studio, & More - .NET Blog
https://devblogs.microsoft.com/dotnet/introducing-ms-test-runner/
MSTest を実行する軽量なツール MSTest Runner のリリースと紹介。
MSTest Runner は単体で実行可能な形にできることで、ランタイムの含まれていない環境でのテスト実行などが行いやすくなる、フットプリントを小さくできるといった利点があるとのこと。
Introducing NuGetSolver: A Powerful Tool for Resolving NuGet Dependency Conflicts in Visual Studio - The NuGet Blog
NuGet のバージョン競合を解決するためのツール NuGetSolver の紹介。
NuGetSolver は Microsoft Research と共同で開発された Visual Studio の拡張機能で、NuGet の依存関係においてバージョン競合が発生している問題を自動で解決するというツール。
記事では導入方法や使用上の注意と制約などについても触れられている。
Current state of C# platform support in Godot 4.2
https://godotengine.org/article/platform-state-in-csharp-for-godot-4-2/
Godot 4.2 での C# プラットフォームサポートの現状について。
サポート(各プラットフォーム向けのエクスポート)については下記の通りとなっている。
- Android 向けエクスポートは .NET 7 以降で Mono によるサポート
- iOS 向けエクスポート .NET 8 の実験的な NativeAOT によるサポート
- Web 向けのエクスポートは現時点では未サポート
- デスクトップ向けのエクスポートは Godot 4.0 からすべてサポート (.NET 7 以降であれば NativeAOT も含む)
バージョン 1.5 実験 (1.5.0-experimental2) - Windows App SDK の実験的リリース チャネル - Windows apps
Windows App SDK 1.5.0-experimental2 がリリースされた。
このリリースではいくつかの不具合の修正と Map 関連をはじめとした新しい API の追加が行われている。
Release Stable Release v5.1.5 · dotnet/SqlClient
https://github.com/dotnet/SqlClient/releases/tag/v5.1.5
Microsoft.Data.SqlClient v5.1.5 がリリースされた。
このリリースではいくつかの不具合が修正されている。
Rider 2024.1 Roadmap | The .NET Tools Blog
https://blog.jetbrains.com/dotnet/2024/01/24/rider-2024-1-roadmap/
Rider 2024.1 のロードマップ。
- UX/UI
- デバッガーの改善
- Blazor WASM アプリケーションの安定したデバッグ体験
- Blazor での Hot Reload
- ステップ実行時間とデータ収集のビジュアライザー
- インラインブレークポイント
- カーソルまで実行 (Run to cursor) inlay オプションの改修
- ゲーム開発
- Unity
- Unreal Engine
- Godot
- Web 開発
- MAUI サポートの改善
- AI アシスタント
- スマートスペルチェッカー
- コンテナーとリモート環境でのユニットテストの実行
- Code With Me (ベータ)
ReSharper 2024.1 Roadmap | The .NET Tools Blog
https://blog.jetbrains.com/dotnet/2024/01/24/resharper-2024-1-roadmap/
ReSharper 2024.1 のロードマップ。
- 予測デバッグモードのデフォルト化
- アウトオブプロセスのアップデート
- Web 開発
- コンテナーとリモート環境でのユニットテストの実行
- AI アシスタント
- その他のプラン
アーティクル、スライドなど
How to deploy .NET Aspire apps to Azure Container Apps - .NET Blog
https://devblogs.microsoft.com/dotnet/how-to-deploy-dotnet-aspire-apps-to-azure-container-apps/
.NET Aspire アプリケーションを作成し、Azure Container Apps にデプロイするまでの簡単な手順の紹介。
In the Debugger's Spotlight: A Year in Review - Visual Studio Blog
https://devblogs.microsoft.com/visualstudio/in-the-debuggers-spotlight-a-year-in-review/
Visual Studio 2022 の2023年に提供された新しいデバッグに関連する機能のまとめと紹介。
- インナーループ生産性の加速
- ブレークポイントグループ
- 拡張テキストビジュアライザー
- 非モーダルビジュアライザー
- コールスタック検索
- 並列スタックウィンドウの改善
- デバッガープロセスへの永続的な再アタッチ
- CMake デバッガー
- 外部ソースコードのスマート化と高速化
- クロスプラットフォームデバッグサポート
- Visual Studio 統合ターミナルでの Linux アプリのデバッグ
- リモートターゲットへのデプロイとデバッグ
- 追加の Linux デバッグ機能
- パフォーマンスのアップグレード
.NET9 Alpha - LINQ updates
https://medium.com/codenx/net9-alpha-linq-updates-c2df66d20e1b
.NET 9 で LINQ に追加される予定の CountBy, AggregateBy オペレーターの紹介。
Guidance for .NET NativeAOT
https://medium.com/@skyake/guidance-for-net-nativeaot-4b9853c80f8a
NativeAOT に対応する際に気を付け、対応すべきポイントのガイド。
Understanding C# 8 default interface methods
https://andrewlock.net/understanding-default-interface-methods/
C# 8 のデフォルトインターフェース実装についての解説。どのようなことができ、どのような問題が発生するかについて。
dotnet-script によるC#スクリプトの実行/デバッグ - Qiita
https://qiita.com/toras9000/items/127548c73547f893995c
dotnet-script を使用した .csx (C# スクリプト) の実行と開発について。
12 Debugging Techniques In JetBrains Rider You Should Know About | The .NET Tools Blog
JetBrains Rider の12個のデバッグテクニックの紹介。
- インライン Watch
- 戻り値
- スマート Step Into デバッグ
- ブレークポイントオプション
- 実行ポインターのドラッグ
- 外部のデコンパイルされたコードのデバッグ
- 例外ブレークポイント
- 静的メソッドの実行とデバッグ
- エディットコンティニュー
- メモリービュー
- スレッド固有ブレークポイント
- DebuggerDisplayAttribute サポート
- ボーナス: 予測デバッガー
Code review & Time Travel
https://ayende.com/blog/200577-B/code-review-time-travel
RavenDB の開発を通して学んだコードレビューについての振り返り。
A replacement for BinaryFormatter in .NET 8
https://steven-giesel.com/blogPost/4271d529-5625-4b67-bd59-d121f2d8c8f6
廃止された BinaryFormatter の移行先としてシリアライザーなどの紹介。
.NET Performance Analysis: Newtonsoft.Json vs System.Text.Json in .NET 8
Newtonsoft.Json と System.Text.Json の単純なシリアライズ/デシリアライズのパフォーマンスの比較について。
WinUI 3 アプリで WinForms の機能を利用する
https://zenn.dev/shinta0806/articles/winui3-winforms
WinUI 3 をベースにしたアプリケーションで Windows Forms の機能を使用するための手順について。
[C# プログラム] 百万件のデータベースレコードを EnityFramework Core で列挙したら、メモリはどれくらい消費されるのか | @jsakamoto
https://devadjust.exblog.jp/29836607/
Entity Framework Core を使用して100万件のレコードを列挙 (foreach) する際のメモリー使用量がどの程度になるのかについて。
My experience working on rustc_codegen_clr - half a year retrospective
https://fractalfir.github.io/generated_html/rustc_codegen_clr_v0_1_0.html
Rust の MSIL バックエンドを実装してきた半年の振り返り。どのようなプロジェクトでどのようなハードルがあるのかといったことなど。
ASP.Net+Swagger+TypeScriptでEnumの表示名を自動生成する
https://dev.to/garicchi/aspnetswaggertypescriptdeenumnobiao-shi-ming-wozi-dong-sheng-cheng-suru-1hoh
ASP.NET Core と Swagger による OpenAPI スキーマから TypeScript 向けのコードを生成する際に Enum の名前がわかりにくくなる問題についての対処方法。
.NET Aspire と Sekiban を使ってアプリケーション作り始める方法
https://zenn.dev/jtechjapan_pub/articles/3da012ed4b49ed
.NET Aspire と独自のイベントソーシングフレームワークを組み合わせて、Cosmos DB をデータストアとしたアプリケーションを作る手順について。
Code Faster and Better with GitHub Copilot's New Features: Slash Commands and Context Variables - Visual Studio Blog
https://devblogs.microsoft.com/visualstudio/copilot-chat-slash-commands-and-context-variables/
Visual Studio の GitHub Copilot の新機能の紹介。
- スラッシュコマンド
- コンテキスト変数
- プレビュー機能
- デバッガーでの例外アシスタント
- ブレークポイント式の提案
- コミットメッセージの提案
- ソリューション参照
- パフォーマンスプロファイラーでの提案
- 失敗したテストの分析
C# で配列(Span)を Unshift しても大丈夫なのか - Qiita
https://qiita.com/sator_imaging/items/49585b191af978b00ad2
Span を Unshift する際にオーバーラップが発生するようなコードを書くとどうなるか、Unity/IL2CPP ではどうなるかといった…。
.NET のガベージコレクションの仕組み
https://notnullvariable.com/2024/440/
.NET のガベージコレクションの仕組みについての紹介。
ライブラリ、リポジトリ、ツールなど
NuGet Gallery | PlantUmlClassDiagramGenerator.SourceGenerator
https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.SourceGenerator
PlantUML のクラス図を生成する Source Generator。
サイト、ドキュメントなど
ツイート
OpenSilver で Silverlight Toolkit Samples がほとんどそのまま動いたという話。
Some might think this is a joke, but it's not! 😄 Who says Silverlight is dead? We've just successfully migrated the original "Silverlight Toolkit Samples" app by Microsoft with almost no code changes. Check it out live in browser—NO PLUGIN REQUIRED—at: https://t.co/Z27hCh6cCZ pic.twitter.com/ErvkM6wfNP
— OpenSilver (Silverlight replacement) (@OpenSilverTeam) January 31, 2024
Deep Dive
Epic: IDistributedCache updates in .NET 9 · Issue #53255 · dotnet/aspnetcore
https://github.com/dotnet/aspnetcore/issues/53255
分散キャッシュの .NET 9 でのアップデートの Issue。
Tracking issue for remaining AssemblyBuilder.Save work in .NET 9 · Issue #92975 · dotnet/runtime
https://github.com/dotnet/runtime/issues/92975
.NET 9 に向けた AssemblyBuilder.Save の作業 Issue。