トピックス
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 でデータを扱う方法についてのドキュメントのとっかかりとなるランディングページが公開された。
🤔If you find yourself asking "How do I <do something with data> in .NET?" we may just have the answer.
— Jeremy Likness ⚡️ (@jeremylikness) July 27, 2022
✅Introducing the new .NET data hub, a place to find documentation from #SQL and #EFCore to #BigData #OData or your data in one click.
PRs accepted!https://t.co/Elpt2I1QAI
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 へリポジトリが移動された。
Terminal.Gui v1.7.0 just released!
— Tigger (Charlie) Kindel (@ckindel) July 28, 2022
- New: Multi-step Wizard
- New: Moved to new github org (gui-cs)
- Bunches of other enhancementshttps://t.co/0YdVGu43TS@migueldeicaza @BDisp #tui #guics #csharp #dotnet #terminalUI #consoleUI #crossplatform pic.twitter.com/ukgdVJru1q
New – Run Visual Studio Software on Amazon EC2 with User-Based License Model | Amazon Web Services
Amazon EC2 で Visual Studio をユーザーベースのライセンスモデルで使用できるようになったというアナウンス。
アーティクル、スライドなど
Containerize .NET applications without writing Dockerfiles | Red Hat Developer
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
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
.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
WinForms、WPF や Avalonia に対応したプロットライブラリー。
サイト、ドキュメントなど
ツイート
Interesting crash today: we've had this code running for years on .NET Framework & Mono, seemingly without issues, but producing a stack overflow on .NET Core which exposes a bug in our code: we're not handling the case where BeginReceiveFrom completes synchronously. pic.twitter.com/YUn46qP1je
— Jb Evain (@jbevain) August 2, 2022
Begin/End (いわゆる APM パターン) 非同期処理で End に続けて次の待機を行うようなコードを .NET Framework / Mono から .NET / .NET Core に移して動かしたところ、挙動が変わって同期的に完了できる場合が出てきたことでスタックオーバーフローしたという話。
We disabled JavaScript and TypeScript support in ReSharper 2022.2 by default
— JetBrains ReSharper (@resharper) August 5, 2022
It was difficult to support new language versions quickly, so we decided to put JS/TS support on hold. We’re looking for a better way to support these languages.
Details: https://t.co/ndCwoIMueQ pic.twitter.com/H2pBXFmSZJ
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。