2022-08-08: .NET Community Toolkit 8.0, Rider and ReSharper 2022.2, ILSpy 8.0 Preview 2

Published on Monday, 08 August 2022

トピックス

Announcing .NET Community Toolkit 8.0! MVVM, Diagnostics, Performance, and more! - .NET Blog

https://devblogs.microsoft.com/dotnet/announcing-the-dotnet-community-toolkit-800/

.NET Community Toolkit 8.0 がリリースされた。

.NET Community Toolkit は Windows Community Toolkit の後継となるライブラリー。.NET Standard 2.0 から .NET 6 までをカバーし、特定の UI プラットフォームによらない機能を提供するライブラリーとなっている(Diagnostics や Performance は UI とも関係ない)。

記事では MVVM Toolkit のソースジェネレーターやメッセンジャー API、その他 Diagnostics API などについて紹介している。

Rider 2022.2 Comes With More C# 11 Features, Performance Improvements, and Extended Unreal Engine Support | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2022/08/02/rider-2022-2-released/

Rider 2022.2 がリリースされた。

このリリースでは Windows 版のバックエンドが .NET 6 に移行されパフォーマンスが向上した他、C# 11 のサポートの強化、Unreal Engine の対応の向上、.NET MAUI サポートの早期プレビューが含まれている。

また Rider が公開されてから5年が経過したことを記念した記事も公開されている。

ReSharper 2022.2 Comes With C# 11 Support, Solution-Wide Analysis Optimizations, and Virtual Formatter | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2022/08/02/resharper-2022-2-released/

ReSharper 2022.2 がリリースされた。

このリリースでは C# 11 のサポートの追加、ソリューションワイドの解析のメモリー周りのパフォーマンスの向上、Virtual Formatting などが含まれている。

Virtual Formatter はディスク上のコードを実際に変更することなく、エディターでの表示上のフォーマットを適用する機能。例えばパラメータを仮想的に整列するといったことを行える。アクセシビリティー面での向上も目標としているとのこと。

dotCover, dotMemory, dotPeek, and dotTrace 2022.2 are here! | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2022/08/02/dottools-2022-2-released/

dotCover, dotMemory, dotPeek, と dotTrace の 2022.2 がリリースされた。

dotCover と dotMemory は Rider での連携や強化が行われている。dotPeek は IL Viewer 内でデコンパイル結果としてハイレベルとローレベルの C# を選択可能となった。dotTrace はタイムラインコールツリーで Windows のカーネル呼び出しなどを詳細に表示できるようになった。

Release ILSpy 8.0 Preview 2 · icsharpcode/ILSpy

https://github.com/icsharpcode/ILSpy/releases/tag/v8.0-preview2

ILSpy 8.0 Preview 2 がリリースされた。

ILSpy 8 では .NET 6 に移行されている。Preview 2 では C# 11 の ref fields や C# 10 の record structs などに対応している。

Public preview: .NET 7 support in Linux Consumption Plan | Azure updates | Microsoft Azure

https://azure.microsoft.com/en-us/updates/public-preview-net-7-support-in-linux-consumption-plan/

Azure Functions の Linux Consumption Plan で .NET 7 のサポートがプレビュー。

.NET Data のドキュメント | Microsoft Docs

https://docs.microsoft.com/ja-jp/ef/dotnet-data/

.NET でデータを扱う方法についてのドキュメントのとっかかりとなるランディングページが公開された。

Try the latest Azure SDK for .NET management libraries

https://devblogs.microsoft.com/azure-sdk/try-the-latest-azure-management-sdk-for-net/

Azure のリソースの作成などの管理系の操作を .NET から行うための新しい Azure SDK for .NET 管理ライブラリーのリリースの紹介。

記事では認証方法、ArmClient について、リソースコレクションのリソースの作成と更新、長期実行操作 (LRO) といったものをコードとともに紹介している。

Release v2.0.0 · Abc-Arbitrage/ZeroLog

https://github.com/Abc-Arbitrage/ZeroLog/releases/tag/v2.0.0

ZeroLog v2.0.0 がリリースされた。

2.0 では .NET 6 と C# 10 の機能を活用する形に書き直され、Interpolated string handler など新しい機能の恩恵を受けられるようになった。

Release Release v1.7.0 · gui-cs/Terminal.Gui

https://github.com/gui-cs/Terminal.Gui/releases/tag/v1.7.0

Terminal.Gui v1.7.0 がリリースされた。

マルチステップウィザードが追加され、様々な不具合の修正が行われたほか、gui-cs Organization へリポジトリが移動された。

New – Run Visual Studio Software on Amazon EC2 with User-Based License Model | Amazon Web Services

https://aws.amazon.com/jp/blogs/aws/new-run-visual-studio-software-on-amazon-ec2-with-user-based-license-model/

Amazon EC2 で Visual Studio をユーザーベースのライセンスモデルで使用できるようになったというアナウンス。

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

Containerize .NET applications without writing Dockerfiles | Red Hat Developer

https://developers.redhat.com/articles/2022/08/01/containerize-net-applications-without-writing-dockerfiles

dotnet-build-image という .NET CLI Tool を使用して Dockerfile を記述することなく .NET アプリケーションをコンテナー化するという記事。

Matt Warren - Performance in the .NET Runtime - NDC London 2022

https://m.youtube.com/watch?v=YcZ-nZa2XgA&feature=youtu.be

.NET nanoFrameworkでM5StickC Plusを使ってみる - はつねの日記

https://hatsune.hatenablog.jp/entry/2022/07/31/013826

M5StickC Plus で .NET nanoFramework を動かしてみる手順などについての記事。

System.Threading.RateLimitingで流量制限を行う - Qiita

https://qiita.com/skitoy4321/items/cf1a08366a1f0cd9a5d1

.NET 7 で導入されるレートリミットを実装するための API である System.Threading.RateLimiting を使用することについての記事。

記事ではライブラリーに含まれるクラスや標準で用意されているレートリミットのアルゴリズムを紹介している。

How to call a REST service in .NET if you have its Open API specification

https://medium.com/@yurexus/how-to-call-a-rest-service-in-net-if-you-have-its-open-api-specification-59fa15c9f857

Visual Studio で OpenAPI 定義からクライアントを生成して API を呼び出す方法についての記事。

C# Converting Bytes To Kilobytes and Beyond

https://khalidabuhakmeh.com/csharp-converting-bytes-to-kb-mb-gb-and-tb

バイト(数値)をキロバイトのような単位に変換するヘルパーを作成するという記事。

記事では既存のライブラリーの Humanizer と UnitsNet についても触れている。

PDD Profiler Driven Development

https://aloiskraus.wordpress.com/2022/07/25/pdd-profiler-driven-development/

プロファイラー駆動開発についての記事。記事では Concurrency Visualizer による並列状態、WPA を使用したファイル I/O や CPU 使用率といったものを解析している。

Microservices Implementation with Ocelot Gateway using .NET Core 6 API and Angular 14

https://medium.com/@jaydeepvpatil225/microservices-implementation-with-ocelot-gateway-using-net-core-6-api-and-angular-14-64b2ce3248ee

.NET の API ゲートウェイである Ocelot API Gateway を使用して ASP.NET Core の API と Angular アプリケーションを組み合わせたマイクロサービスを実装する方法についての記事。

生文字列リテラルを使ってみた (C# 11 新機能) - Qiita

https://qiita.com/haruka_kotani/items/a274b982d6d42c5540f0

C# 11 で導入される新機能の生文字列リテラル (Raw string literal) について紹介している記事。

Prevent sensitive data exposure in log with Serilog

https://dev.to/auvansang/prevent-sensitive-data-exposure-in-log-with-serilog-1pk7

Serilog でパスワードのようなセンシティブなデータをマスクする方法についての記事。

Differentiating Visual Studio instances - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/differentiating-visual-studio-instances/

Visual Studio Code の Peacock 拡張のように、異なる Visual Studio のインスタンス/ソリューションをステータスバーの上の色で判別できるようにする拡張の紹介記事。

How to Bulk Email with C# and .NET: Zero to Hero

https://www.twilio.com/blog/bulk-email-with-csharp-and-dotnet

C# から SendGrid の API を呼び出して、一斉にメールを送信する方法についての記事。パーソナライズやテンプレートの簡単な使い方について触れている。

CMake + C++を使って WinRT Component を作って C# WinUI3 アプリから使う (後編) - Qiita

https://qiita.com/unicodon/items/4351458bda722a106695

C++ で実装した Windows Runtime (WinRT) Component を WinUI 3 を使用した C# アプリケーションから利用する手順についての記事。

Peeking into LINQ DistinctBy source code

https://dev.to/canro91/peeking-into-linq-distinctby-source-code-48a2

.NET 6 で LINQ に追加された DistinctBy のソースコードを解説している記事。

[C#] ビットカウントする(1が立っているビット数を数える) - Qiita

https://qiita.com/radian-jp/items/fca624ffb04553c44de7

C#/.NET でのビットカウントについての記事。

ナイーブな実装との比較や popcnt が使用できない場合のソフトウェアフォールバック実装についても触れている。

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

GitHub - IzyPro/WatchDog

https://github.com/IzyPro/WatchDog

ASP.NET Core アプリケーションのリクエストやログを記録して表示するユーザーインターフェースを提供する開発支援ライブラリー。

ScottPlot

https://scottplot.net/

WinForms、WPF や Avalonia に対応したプロットライブラリー。

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

ツイート

Begin/End (いわゆる APM パターン) 非同期処理で End に続けて次の待機を行うようなコードを .NET Framework / Mono から .NET / .NET Core に移して動かしたところ、挙動が変わって同期的に完了できる場合が出てきたことでスタックオーバーフローしたという話。

ReSharper 2022.2 から JavaScript と TypeScript のサポートがデフォルトで無効となるという話。言語のアップデートに対して迅速なサポートを続けていくことが難しくなっているため、長い議論の末にサポートは保留とすることになりデフォルトで無効とされた。

Deep Dive

30% optimization of DateTime.GetDate()/.Year/.Month/.Day/.DayOfYear by 'Euclidean affine functions' by SergeiPavlov · Pull Request #72712 · dotnet/runtime

https://github.com/dotnet/runtime/pull/72712

Euclidean Affine Functions というアルゴリズムによって年月日の計算を30%高速化するという PR。