2024-02-02: Microsoft Copilot with SignalR, Office's RTC migration to modern .NET, Uno Platform 5.1

Published on Friday, 02 February 2024

トピックス

Building AI-powered Microsoft Copilot with SignalR and other open-source tools - .NET Blog

https://devblogs.microsoft.com/dotnet/building-ai-powered-bing-chat-with-signalr-and-other-open-source-tools/

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

https://devblogs.microsoft.com/nuget/introducing-nugetsolver-a-powerful-tool-for-resolving-nuget-dependency-conflicts-in-visual-studio/

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

https://learn.microsoft.com/ja-jp/windows/apps/windows-app-sdk/experimental-channel#version-15-experimental-150-experimental2

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

https://blog.jetbrains.com/dotnet/2024/01/29/12-debugging-techniques-in-jetbrains-rider-you-should-know-about/

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

https://trevormccubbin.medium.com/net-performance-analysis-newtonsoft-json-vs-system-text-json-in-net-8-34520c21d054

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 のガベージコレクションの仕組みについての紹介。

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

https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.SourceGenerator

PlantUML のクラス図を生成する Source Generator。

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

ツイート

OpenSilver で Silverlight Toolkit Samples がほとんどそのまま動いたという話。

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。