2024-09-19: .NET 9 Release Candidate 1, AWS SDK for .NET with OpenTelemetry, StackExchange.Redis 2.8.16

Published on Thursday, 19 September 2024

トピックス

.NET 9 Release Candidate 1 is now available! - .NET Blog

https://devblogs.microsoft.com/dotnet/dotnet-9-release-candidate-1-is-now-available/

.NET 9 Release Candidate 1 がリリースされた。

  • ライブラリー
    • WebSocket Keep-Alive Ping とタイムアウト API
    • ZLib, Brotli 圧縮オプションの追加
    • TarEntry.DataOffset の追加
    • HttpClientFactory のデフォルトでのヘッダー値のログ無効化
    • アウトオブプロセス Meter ワイルドカード購読
  • SDK
    • ワークロードヒストリー
  • ASP.NET Core
    • SignalR 分散トレーシングの改善
    • WebSockets の Keep-alive タイムアウト
    • ミドルウェアでのキー付き DI
    • InputNumber タイプ属性のオーバーライド
    • Linux での ASP.NET Core HTTPS 開発証明書の信頼
  • .NET MAUI
    • HorizontalTextAlignment.Justify の追加

Enhancing Observability in the AWS SDK for .NET with OpenTelemetry | Amazon Web Services

https://aws.amazon.com/jp/blogs/developer/enhancing-observability-in-the-aws-sdk-for-net-with-opentelemetry/

AWS SDK for .NET 3.7.400 以降でサポートされている OpenTelemetry 対応についての解説。

記事では OpenTelemetry 統合の有効化と追加方法、サポートされているメトリックや独自のテレメトリープロバイダーの作成方法などを紹介している。

Release 2.8.16 · StackExchange/StackExchange.Redis

https://github.com/StackExchange/StackExchange.Redis/releases/tag/2.8.14 https://github.com/StackExchange/StackExchange.Redis/releases/tag/2.8.16

StackExchange.Redis 2.8.14, 2.8.16 がリリースされた。

このリリースではいくつかの不具合が修正されている。

GitHub Models and .NET: Building Generative AI apps for engineers - .NET Blog

https://devblogs.microsoft.com/dotnet/using-github-models-and-dotnet-to-build-generative-ai-apps/

GitHub Models を .NET から使用する方法について。

記事では Azure AI Inference SDK を使用して GitHub Models を使用する例を Phi-3 モデルで解説している。

Android Asset Packs for .NET & .NET MAUI Android Apps - .NET Blog

https://devblogs.microsoft.com/dotnet/android-asset-packs-in-dotnet-android/

.NET 9 でサポートされる Android のアセットパックのビルドについて。

記事ではアセットパックとは何か、今までの .NET ではどのような問題があり .NET 9 で解決されるのか、アセットパックをオンデマンドでダウンロードする方法やデバッグする方法といったことについて。

ゲーム領域向け Runtime Fee の撤回について

https://unity.com/ja/blog/unity-is-canceling-the-runtime-fee

Unity 6 以降で導入が予定されていた Runtime Fee (インストール数ベースでの課金) を撤回することとなったことについて。

Performance Improvements in .NET 9 - .NET Blog

https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-9/

.NET 9 での様々なパフォーマンス改善についてコードとベンチマークを使った詳細な解説。

Preview release of SDK-style SQL projects in Visual Studio 2022

https://techcommunity.microsoft.com/t5/azure-sql-blog/preview-release-of-sdk-style-sql-projects-in-visual-studio-2022/ba-p/4240616

Visual Studio の SQL Server Data Tools 向けのプロジェクトで SDK スタイルのプロジェクトをプレビューサポートした。

Modernize your UWP app with preview UWP support for .NET 9 and Native AOT - #ifdef Windows

https://devblogs.microsoft.com/ifdef-windows/preview-uwp-support-for-dotnet-9-native-aot/

.NET 9 で UWP のプレビューサポートとなった。

.NET 9 による UWP のサポートで WinUI 3 への移行が可能になることや、更新されなかった .NET Core 2.0 レベルの機能と .NET Native (AOT) のランタイムからモダンな C# と .NET ランタイムを使用した開発が行えるようになる。

記事では .NET 9 を使用した UWP プロジェクトの作成方法とプロジェクトファイルの詳細な説明、F# のサポート、その他エコシステムのサポート状況などについても触れている。

Simplifying components for .NET/C# developers with componentize-dotnet

https://bytecodealliance.org/articles/simplifying-components-for-dotnet-developers-with-componentize-dotnet

.NET ツールから WebAssembly コンポーネントを出力できる componentize-dotnet がプレビューリリースされた。

componentize-dotnet は NativeAOT の LLVM コンパイラーやバインディングの生成、WASI SDK といったものをパッケージにしたもので、NuGet パッケージを参照するだけで dotnet build によって WebAssembly コンポーネントを生成できるようになる。

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

How to run .NET apps natively on Arm64 devices - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/how-to-run-net-apps-natively-on-arm64-devices/

Visual Studio 2022 と Windows 11 24H2 で Arm 環境において Any CPU が指定された .NET アプリケーションを Arm ネイティブに実行する方法について。

【C#】Expression.Compile()を安易に使ってはいけない理由と対策 - Qiita

https://qiita.com/simoyama2323/items/8741f455292c03ed1fd9

Expression.Compile を使用する場合にかかるコストについて。

記事では Expression.Compile を使用しなくてよい場合の代替案などについても紹介している。

Understanding the behavior of the XAML Designer with abstract base classes - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/understanding-the-behavior-of-the-xaml-designer-with-abstract-base-classes/

Visual Studio 2022 での XAML デザイナーにおける abstract クラスを使用したコントロールの挙動について。

記事では abstract クラスを使用した場合の問題点とその解決策について解説している。

TUnit を使おう!

https://zenn.dev/masakura/articles/e0238d7b87dedd

xUnit や NUnit のようなテストフレームワーク TUnit の紹介。

.NET 9の新しいLINQのCountBy

https://zenn.dev/tomokusaba/articles/83a3fdf6515435

.NET 9 の LINQ で導入される CountBy についての紹介。

C# 11.0 new features: ref fields and the scoped keyword | endjin

https://endjin.com/blog/2024/09/dotnet-csharp-11-ref-fields-scoped-keyword

C# 11 の ref キーワードと scoped キーワードについての解説。

Building a GraphQL Client in .NET with JetBrains Rider and StrawberryShake | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2024/09/17/building-a-graphql-client-in-net-with-jetbrains-rider-and-strawberryshake/

Rider と StrawberryShake を使用して GraphQL クライアントを実装することについて。

記事では Rider の GraphQL 拡張プラグインを使用して GraphQL の開発を効率的に進める方法について触れている。

【LINQ】GroupJoinを理解する

https://zenn.dev/shimiyu/articles/5a01676d6165f7

LINQ の GroupJoin メソッドに関する挙動の解説。SelectMany と組み合わせた結合に関しても触れている。

Implementing Floyd-Warshall algorithm for solving all-pairs shortest paths problem in C#

https://olegkarasik.wordpress.com/2021/04/25/implementing-floyd-warshall-algorithm-for-solving-all-pairs-shortest-paths-problem-in-c/

C# で最短パスを探索する Floyd-Warshall アルゴリズムを実装し、その実装を最適化する手法を解説している。

Intersperse Values for Enumerable Collections

https://khalidabuhakmeh.com/intersperse-values-for-enumerable-collections

コレクションの要素間に要素を追加する Interspase メソッドを実装する方法について。

Tracing allocations with EventPipe part 3 — Tracing without dotnet-trace

https://medium.com/@ocoanet/tracing-allocations-with-eventpipe-part-3-tracing-without-dotnet-trace-7244bdb86e03

EventPipe を使用してアロケーションをトレースする方法についてのパート3。

この記事では DiagnosticsClient を使用して実行中のセッションからトレースする方法とその際の問題と dotnet-trace を参考にした解決手段を解説している。

C# .NET 8.0+Native AOTでコンソールアプリを作成する - Qiita

https://qiita.com/nekotadon/items/6031ec1d90f1834e2324

.NET 8 でコンソールアプリケーションを Native AOT でビルドするまでの手順の解説。

Semantic Kernel のマルチエージェント AI 機能入門してみよう その 2

https://zenn.dev/microsoft/articles/semantic-kernel-agents-003

Semantic Kernel の Agent 関連のクラスとそのコードについての詳細を読んでいく話。

C#でRSA鍵ペアをPEM形式で保存・読み込み、メッセージの暗号化と復号化【.NET 7以降対応】 - Qiita

https://qiita.com/SoundOrion/items/6d4da8b6cce6b52e318d

.NET 7 以降で対応した PEM 形式の RSA 鍵を扱いメッセージを暗号化と復号を行う方法について。

Unexpected usage of EventSource or how to test statistical results in CLR pull request

https://chnasarre.medium.com/unexpected-usage-of-eventsource-or-how-to-test-statistical-results-in-clr-pull-request-8431ffdc460a

CLR の Pull request で統計結果のテストを取るために EventSource を利用した話。

WinRT COM Interface から Win32 COM Interface へキャストする - Qiita

https://qiita.com/kumakamikoubou/items/245991bb7b247da1eea8

IMemoryBufferReference を IMemoryBufferByteAccess へキャストするような WinRT のインターフェースを Win32 COM インターフェースにキャストする必要がある場合の対応方法について。

Alternate Lookup for Dictionary and HashSet in .NET 9 - NDepend Blog

https://blog.ndepend.com/alternate-lookup-for-dictionary-and-hashset-in-net-9/

.NET 9 の Dictionary や HashSet に追加される GetAlternateLookup API について、パフォーマンスと独自の実装方法などを解説している。

Preventing breaking changes in public APIs with PublicApiGenerator

https://andrewlock.net/preventing-breaking-changes-in-public-apis-with-publicapigenerator/

クラスライブラリーの公開 API の破壊的変更を PublicApiGenerator で防ぐ方法について。

記事では PublicApiAnalyzer を使用した場合の不満と別な手段としての PublicApiGenerator とユニットテストを使用した検証方法を紹介している。

WebAssembly and Containers: Orchestrating Distributed Architectures with .NET Aspire

https://www.infoq.com/articles/webassembly-containers-dotnet-aspire/

.NET Aspire で WebAssembly によるサーバーレスアプリケーションを実行する Spin をホストできる Fermyon.Aspire.Spin の紹介。

値型レコードを逆コンパイルしてみる - Qiita

https://qiita.com/abetakahiro123/items/0ea0eeaa82e6921ede87

値型レコードを逆コンパイルしてどのような実装となっているのかについての解説。

Why is F# code so robust and reliable? - .NET Blog

https://devblogs.microsoft.com/dotnet/why-is-fsharp-code-so-robust-and-reliable/

F# によるコードの堅牢さと信頼性についての紹介記事。(.NET ブログのゲスト寄稿記事)

Break for Async User-Unhandled exceptions in the Visual Studio Debugger - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/break-for-async-user-unhandled-exceptions-in-the-visual-studio-debugger/

.NET 9 以降と Visual Studio を組み合わせた場合に非同期処理の中で発生したユーザーの未処理例外をブレークできるようになることについて。

ASP.NET Coreを用いた開発で使う環境変数を1Passwordで管理するようにした

https://zenn.dev/i999m/articles/4e613a5cc95e6b

ASP.NET Core アプリケーションの開発時に環境変数を 1Password で管理し、取得、実行する方法について。

WinUI 3での実用的なWindowサイズの設定 - Qiita

https://qiita.com/emoacht/items/e3935ebc6f713f95ed50

WinUI 3 でウィンドウサイズをコードから設定する方法について。記事では AppWindow.ResizeClient を使用した具体的な実装方法について触れている。

Learn to Build Your First Blazor Hybrid App! - .NET Blog

https://devblogs.microsoft.com/dotnet/introducing-blazor-hybrid-workshop/

Blazor Hybrid アプリケーションを作成するワークショップの紹介。

Search scoping helps you find what you’re looking for - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/search-scoping-helps-you-find-what-youre-looking-for/

Visual Studio の検索でスコープ(ソリューション、プロジェクト、ドキュメント)を指定する方法について。

VisualStudio.Extensibility 17.11: Settings and more Remote UI support - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/visualstudio-extensibility-17-11-settings-and-more-remote-ui-support/

Visual Studio の新しい拡張モデル VisualStudio.Extensibility 17.11 リリースについて。

17.11 では設定のサポートやリモート UI の拡張、ツールバーとツールウィンドウなどのアップデートが行われている。

記事ではプロジェクトクエリー API ドキュメントの更新や試験的 API と破壊的変更についての決定についても触れている。

ONNX Runtime の QNN Execution Provider を使って Snapdragon X Elite の NPU で画像分類を行ってみた - しばやん雑記

https://blog.shibayan.jp/entry/20240911/1726041638

ONNX Runtime で Qualcomm AI Engine Direct SDK を使用する QNN Execution Provider を使用して、Snapdragon X Elite の NPU で ResNet50 による画像分類を実行する方法について。

Implementing Local RAG using Phi-3 ONNX Runtime and Sidecar Pattern on Linux App Service

https://azure.github.io/AppService/2024/09/03/Phi3-vector.html

Azure Linux App Service で ONNX Runtime と Phi-3 モデルをサイドカーでバックエンドとして動かしてローカル LAG を実装する方法について。

C#/.NETのすすめ

https://zenn.dev/tomokusaba/articles/3b1150edaafb8c

現状の C# と .NET についてを簡単に紹介。

イベント、動画など

昼休みに Semantic Kernel をさわってみよう配信 (2024/09/26 12:00〜)

https://msdevjp.connpass.com/event/330257/

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

prozolic/CsToml: TOML Parser/Serializer for .NET

https://github.com/prozolic/CsToml

パフォーマンスを重視した TOML パーサー/シリアライザーライブラリー。