2023-03-03: Visual Studio 2022 v17.6 Preview 1, C# for Godot 4.0, ImageSharp 3.0.0, Microsoft Teams' Permission Service migration to .NET 6

Published on Friday, 03 March 2023

トピックス

Try Visual Studio 2022 v17.6 Preview 1 - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/try-visual-studio-2022-v17-6-preview-1/

Visual Studio 2022 version 17.6 Preview 1 がリリースされた。

記事ではこのリリースに含まれる次の新機能を紹介している。

  • IDE のプロダクティビティ
    • ブレースのペアの色付け
    • Git のラインステージングの unstage
    • GitHub Issues 参照
  • .NET
    • C# の IntelliCode による API 使用例 (GitHub 検索連携)
    • .NET リモートデバッグ時のビジュアライザーサポート
    • ARM64 デバイスでの .NET MAUI Tooling
  • C++ (ゲーム)
    • Unreal Engine ログビューア
    • コード分析統合 - Unreal Header Tool
  • C++ (クロスプラットフォーム)
    • CMake デバッガー
    • Unix 環境でのリモートファイルエクスプローラー
    • 組み込み STM32CubeIDE プロジェクトの C/C++ のインポート

What's new in C# for Godot 4.0

https://godotengine.org/article/whats-new-in-csharp-for-godot-4-0/

ゲームエンジン Godot 4.0 での C# 関連の変更について。

Godot 4.0 では多くの面で変更があり、特に大きい点として SDK が Mono から .NET SDK へと変更され、デスクトップ向けのランタイムが CoreCLR となった。モバイルプラットフォームは引き続き Mono ランタイムとなる。この変更で Mono モジュールは .NET モジュールと呼ばれるようになり、.NET 6 の様々な恩恵を受けることが可能となった。

その他 Source Generator や整数、浮動少数点の型、型やメンバーの名前の .NET ガイドラインへの準拠、NuGet へのアセンブリーの公開など、多数の変更がある。

Six Labors : Announcing ImageSharp 3.0.0

https://sixlabors.com/posts/announcing-imagesharp-300/

ImageSharp 3.0.0 がリリースされた。

このバージョンでは様々な API の簡素化や最大14.4倍のパフォーマンスの向上といった改善が含まれている。 ターゲットフレームワークは .NET 6 となり、レガシーフレームワークのサポートが終了しているほか、新しい Six Labors Split ライセンスが採用される最初のバージョンとなっている。

Microsoft Teams' Permission Service migration to .NET 6 - .NET Blog

https://devblogs.microsoft.com/dotnet/microsoft-teams-permission-service-migration-to-dotnet-6/

Microsoft Teams の Permission Service を .NET 6 へ移行した事例紹介。

Microsoft Teams のサービスの一つである Permission Service を .NET Framework 4.7.2 から .NET 6 へ移行した結果、100%のパフォーマンス向上とレイテンシーの 30-45% 程度の低減を実現できたとのこと。

Permission Service はユーザーとテナントを評価して、プレゼンスの表示やユーザーの追加、チャットの開始、会議の作成といったことを行えるかどうかを決定する様々なケースにおいて利用されるバックエンドサービスであり、厳しいパフォーマンス要件が求められている。.NET 6 への移行前は .NET Framework 4.7.2 で Azure の Classic Cloud Services、API は OWIN/Katana で構築されていた。

移行のプロセス、実行 (人数と期間や ServicePointManagerの非推奨化からの移行漏れ問題)、ロールアウト中に見られた洞察 (.NET 6 版のパフォーマンスが高く、多くのトラフィックをさばいた結果既存のものよりも使用率が高く見えた)、効果 (レイテンシーの改善)といったものを紹介している。

Visual Studio 2022 version 17.5.1 | Visual Studio 2022 Release Notes | Microsoft Learn

https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-notes#17.5.1

Visual Studio 2022 version 17.5.1 がリリースされた。

このリリースでは 17.5 (.NET SDK 7.0.200) での dotnet pack--output オプションに関する問題に対する対応 (.NET SDK 7.0.201) やいくつかの修正が行われている。

Build Better Extensions with VisualStudio.Extensibility Preview 3! - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/visualstudio-extensibility-preview-3/

Visual Studio の新しい拡張 API / SDK である VisualStudio.Extensibility の Preview 3 のアナウンス。

このプレビューでは次の機能を利用/実装できるようになった。

  • デバッガービジュアライザー
  • カスタムダイアログ
  • プロジェクトシステムへの問い合わせ
  • エディターマージンの拡張機能
  • 拡張機能の構成
    • 属性を指定するモデルから型指定されたプロパティーへ

Join us for Hack Together: Microsoft Graph and .NET - .NET Blog

https://devblogs.microsoft.com/dotnet/hack-together-microsoft-graph-dotnet/

Microsoft Graph と .NET を使用したアプリを作って賞品をもらえるというバーチャルハッカソン(キャンペーン)のアナウンス。

3月1日から3月15日までの期間に Microsoft Graph と .NET を使用したアプリを提出することで Xbox 等の賞品の獲得のチャンスがあるとのこと。

Release Plotly.NET v4.0.0 · plotly/Plotly.NET

https://github.com/plotly/Plotly.NET/releases/tag/4.0.0

Plotly.NET v4.0.0 がリリースされた。

このリリースではいくつかのチャートに渡すことのできるデータの改善や plotly.js への変更に追随している。

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

"Pico Chess, start a new game": .NET Speech Recognition Tutorial

https://dev.to/picovoice/pico-chess-start-a-new-game-net-speech-recognition-tutorial-2jj1

Picovoice の .NET SDK をテキストベースのチェスエンジン ChessCore に組み合わせて音声で操作できるようにする方法について。

7 .NET Tools for Interacting with Web3

https://medium.com/c-sharp-progarmming/7-net-tools-for-interacting-with-web3-96a921c86a21

.NET で使用できるブロックチェーンのライブラリー7つ (Nethereum, CardanoSharp, BlockM3, Neo, Stratis, Blockfrost.io, Nethermind) を紹介している。

Sentence Similarity in ML.NET Model Builder - .NET Blog

https://devblogs.microsoft.com/dotnet/sentence-similarity-mlnet-model-builder/

ML.NET Model Builder で文の類似性を扱えるようになったことについて。

Customising the RequestDelegate with filters: Behind the scenes of minimal APIs - Part 8

https://andrewlock.net/behind-the-scenes-of-minimal-apis-8-customising-the-request-delegate-with-filters/

ASP.NET Core の Minimal API の裏側で作られる RequestDelegate とフィルターによるカスタマイズがどのように処理されるかについての解説。

Data Loading in Entity Framework

https://dev.to/grontis/data-loading-in-entity-framework-2foe

Entify Framework Core で Microsoft.EntityFrameworkCore.Proxies を使用して遅延読み込みをする方法について。

.NET C# で Ubuntu で GTK で GNOME ウインドウで Hello World する - Qiita

https://qiita.com/hiroxpepe/items/bc4caa6b6c77f5ddf89a

.NET 6 と GtkSharp (GTK) を組み合わせて Linux 上にウィンドウを表示してみる方法について。

The fastest way to add files and folders - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/the-fastest-way-to-add-files-and-folders/

Visual Studio 2022 version 17.5 で導入された新しいファイル追加のダイアログの紹介。

Introducing F# Inline Type & Parameter Name Hints in Visual Studio - .NET Blog

https://devblogs.microsoft.com/dotnet/fsharp-inline-hints-visual-studio/

Visual Studio で F# の型とパラメータ名のインラインヒントがサポートされたことについて。

現在プレビュー機能として提供されているため使用するには設定から有効にする必要がある。

.NET アプリケーションで CPU 時間を使っている箇所を dotnet trace を使って計測する | @jsakamoto

https://devadjust.exblog.jp/29509340/

dotnet-trace を使用して .NET アプリケーションの CPU 時間をプロファイリングする方法について。

C#でDictionaryのキーに2つのintを使いたい場合の性能比較 (ただしキーの範囲は[-32768, 32767])

https://zenn.dev/zubu/articles/f594afaa3b6051

二つの int から得られるハッシュコードとその衝突率による Dictionary の性能について。ValueTuple や HashCode を使用した方法などを比較している。

【C#】Math.NET Numericsで単純線形回帰分析(SLR:Simple Linear Regression) - Qiita

https://qiita.com/MonaiTakeshi/items/e36c6fc232230699ff03

Math.NET Numerics を使用して単純線形回帰分析を行う方法について。

【C#】Math.NET Numericsで重回帰分析(MLR:Multiple Linear Regression) - Qiita

https://qiita.com/MonaiTakeshi/items/df0ce261a2ffcde71495

Math.NET Numerics を使用して重回帰分析を行う方法について。

Raw Strings, UTF-8 Strings, and Multiline Interpolations – Using C# 11 in Rider and ReSharper | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2023/02/27/raw-strings-utf-8-strings-multiline-interpolations-using-csharp-11-in-rider-and-resharper/

C# 11 での生文字列と UTF-8 文字列、複数行の文字列補完とそれに対する Rider と ReSharper でのサポートについての紹介。

C# "var" with a Reference Type is Always Nullable

https://jeremybytes.blogspot.com/2023/02/c-var-with-reference-types-is-always.html

C# の var で定義した変数は null 許容参照型として扱われることについて。

BlazorServerでクライアントのIPアドレスを全ページで共有する - Qiita

https://qiita.com/takaOG/items/375d67397ddc3dc77fc9

Blazor Server でクライアントの IP アドレスを取得し、ページ間で共有する方法について。

.NETでgRPCサーバー立ててみた

https://zenn.dev/au/books/7cec3e306916a5

.NET で gRPC サーバーを実装し、データベースへの書き込みや Interceptor の実装といったことを行う手順の解説。

OpenTelemetry dotnetを触ってみた

https://zenn.dev/k_maru/articles/first_opentelemetry_dotnet

OpenTelemetry で ASP.NET Core アプリケーションのトレースを取得して、表示する方法について。

外部サービス呼び出しや Zipkin での表示といった方法も紹介している。

The Blazor NavigationManager - Kristoffer Strube’s Blog

https://kristoffer-strube.dk/post/the-blazor-navigationmanager/

Blazor の NavigationManager クラスの解説。

.NET 7 以降に新たに追加された API RegisterLocationChangingHandler についても解説している。

Write a high-quality README for NuGet packages - The NuGet Blog

https://devblogs.microsoft.com/nuget/write-a-high-quality-readme-for-nuget-packages/

NuGet パッケージの高品質な README を記述するためのガイド。

NuGet.org で README を表示できるようになったことで重要性が増した README に何を書くべきか、テンプレート、グッドプラクティスといったものを紹介している。

Delegates

https://ericsink.com/native_aot/delegate_i32.html

NativeAOT でデリゲートを C から C# に渡して呼び出したりすることについて。

Math.NETのベクトルをMemoryPackでシリアライズする - Qiita

https://qiita.com/delicioustuna/items/6cd457bbfb40254663d2

Math.NET の Vector<T> を MemoryPack でシリアライズするための Formatter の実装について。

GitHub Copilot in Visual Studio 2022 - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/github-copilot-in-visual-studio-2022/

Visual Studio 2022 の GitHub Copilot の更新について紹介するビデオ。

TDDで作るRoslynアナライザー【DeNA TechCon 2023】

https://speakerdeck.com/dena_tech/techcon2023-session03

Roslyn Analyzer のユニットテストでテストコードの記述を補助する Dena.CodeAnalysis.Testing を使用して開発する方法を解説しているセッションのスライド。

Optimizing Entity Framework Core Database Queries With Dynamic Program Analysis | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2023/03/02/optimizing-entity-framework-core-database-queries-with-dynamic-program-analysis/

ReSharper と Rider のアプリケーションのパフォーマンスを自動的に解析する Dynamic Program Analysis (DPA) を使用して Entity Framework Core のデータベースクエリーを最適化する方法について。

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

Cysharp/csbindgen: Generate C# FFI from Rust for automatically brings native code and C native library to .NET and Unity.

https://github.com/Cysharp/csbindgen

C 言語のネイティブライブラリーを .NET に持ち込むためのバインディングを生成する Rust ライブラリー。

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

ツイート

Stack Overflow の構成の解説。

Visual Studio 2022 version 17.5 から .http ファイルを作成することで Visual Studio Code の REST Client のようなことができるようになったという話。

Immutable と Frozen の違い。

Deep Dive

wpf/roadmap.md at main · dotnet/wpf · GitHub

https://github.com/dotnet/wpf/blob/main/roadmap.md

WPF の2023年のロードマップ。Windows 11 のテーマ対応など。