トピックス
Release v6.0.2 · npgsql/npgsql
https://github.com/npgsql/npgsql/releases/tag/v6.0.2
Npgsql 6.0.2 がリリースされた。
6.0.0 でパラメータ名のマッチングを case-sensitive に変更したが、いくつかのシナリオでパラメータプレースホルダーがカラム名として評価されデータの損失が発生する問題があったため差し戻されている。
AWS Toolkit for Visual Studio 2022 - Visual Studio Marketplace
https://marketplace.visualstudio.com/items?itemName=AmazonWebServices.AWSToolkitforVisualStudio2022
AWS Toolkit for Visual Studio 2022 がリリースされた。
Upgrade your .NET on AWS developer experience. The AWS Toolkit for Visual Studio 2022 is out of preview and is now generally available. Download from the Visual Studio Marketplace.https://t.co/nvBS1wSNSz#dotnet #AWS #dotNETonAWS
— .NET on AWS (@dotnetonAWS) December 21, 2021
Release 6.0.101-preview.11 · dotnet/maui
https://github.com/dotnet/maui/releases/tag/6.0.101-preview.11.3
MAUI 6.0.101-preview.11 がリリースされた。
主な変更点は Windows での Fluent Design System のスタイリング、Android, iOS, macOS, Windows (experimental) でのマルチウィンドウ対応、テンプレートの更新など。
アーティクル、スライドなど
Blazor serverをラズパイに入れてFAしたい - Qiita
https://qiita.com/yamaccu/items/9e86db8d8fa44f43dcc1
Raspberry Pi で動作するアプリケーションの UI として Blazor を使用するという記事。
Integration testing and NuGet packaging: Creating a source generator - Part 3
https://andrewlock.net/creating-a-source-generator-part-3-integration-testing-and-packaging/
Source Generator の統合テストと NuGet パッケージ作成についての記事。
統合テストでは Source Generator で生成したコード自体をテストするといったことを行っている。
.NET 6に入ったPriorityQueueの紹介と、ダイクストラ法を書いてみる | Yucchiy's Note
https://blog.yucchiy.com/2021/12/priority-queue-dotnet6/
.NET 6 で新たに導入された PriorityQueue クラスの紹介の記事。
記事では PriorityQueue を使用してダイクストラ法を解く例を解説している。
Test tools for .NET and cross-platform apps
https://devblogs.microsoft.com/visualstudio/vs22-test-tools-for-net-and-cross-platform-apps/
Visual Studio の .NET のテストツールに関する Tips 的な記事。
- コードからテストエクスプローラーで表示する機能
- テストが完了時に音を鳴らす機能
- Console.WriteLine の呼び出しをテストエクスプローラーで確認できる機能
- SSH や WSL などのリモートでテストを実行する機能
- Playwright の Web アプリケーションテストコードを生成する機能
自作UIフレームワークExprazorの紹介と仮想DOMの実装方法 - Qiita
https://qiita.com/WiZLite/items/6448185e5156efa348e2
ASP.NET Core で動作する仮想 DOM を持つ C# による UI フレームワークを実装したという記事。
.NET 6 がLTS(Long-term Support)にふさわしい理由 - Qiita
https://qiita.com/proprogrammer0/items/0f828266e710eea86e09
以前から要素としては提供されていたが、組み合わせることができなかったものが .NET 6 で解消したものについての記事。
記事では「アセンブリのトリミングと System.Text.Json」と「Blazor コンポーネントと where 型制約」といったものが紹介され、.NET 6 でも未対応な組み合わせについても触れている。
(C#) メモリ確保ベンチマーク on .NET6 - ネコのために鐘は鳴る
https://ikorin2.hatenablog.jp/entry/2021/12/20/225208
.NET 6 で追加/変更された NativeMemory も含めてのマネージドなメモリー(配列)とアンマネージドなメモリー(ネイティブ)での確保時のベンチマークを取っている記事。
Blazor WebAssembly で作った Web アプリ "snow catch" ゲームを、🎮 ゲームパッド (ジョイスティック) で操作できるようにする - Qiita
https://qiita.com/jsakamoto/items/4705be2e5c6c7f1fccc8
How to compare two files using .NET, really really fast!
https://dev.to/emrahsungu/how-to-compare-two-files-using-net-really-really-fast-2pd9
.NET で二つのファイルを高速に比較する手法についての記事。
記事では MD5 での比較に対してバイト単位での直接比較を行う中で、チャンク化や SIMD の使用といった手法での高速化を紹介している。
.NET6.0でのLINQの改善や新しいAPIを紹介 - Qiita
https://qiita.com/shun-shun123/items/235cf61ae03d402f46ce
.NET 6 で改善された LINQ のメソッドについてと、新しい API について紹介している記事。
Index/Range をとるオーバーロードについてや TryGetNonEnumeratedCount メソッドについて触れている。
Blazor ComponentsをJavaScriptからインスタンス化出来る機能のサンプルコードを追って拡張してみよう - Qiita
https://qiita.com/yamachu/items/7fcf645cfdc995990cce
Blazor のコンポーネントを JavaScript (React) から生成する公式のサンプルコードを開設している記事。
記事では解説のほか、コード生成部分を型情報を生成するといった修正なども行っている。
.NET 6からのC# Incremental Source Generatorの開発入門
https://zenn.dev/pcysl5edgo/articles/6d9be0dd99c008
Visual Studio 2022 / .NET 6 からの Incremental Source Generator についての記事。
記事ではファイルをコードに埋め込む Source Generator を題材として実装、パッケージングについてを解説している。Visual Studio 2019 との共存方法についても触れている。
【Unity, C#】非publicな型やメンバにアクセスするには、多分これが一番手軽だと思います - Qiita
https://qiita.com/mob-sakai/items/37978a030d6a6e262065
Unity で internal な型やメンバーにアクセスする方法についてのまとめ記事。
記事では InternalsVisibleToAttribute
, .asmref
, CSharpCompilerSettingsForUnity パッケージを使用する方法を紹介している。
C#のアプデでめちゃくちゃ便利になったswitch文(パターンマッチング)の紹介 - Qiita
https://qiita.com/toRisouP/items/18b31b024b117009137a
C# 8 以降で強化された switch 式とステートメントについての記事。
C#のプロパティによるパターンマッチングを使おう - Qiita
https://qiita.com/emoacht/items/dc1c40769dc6cdc1ef44
C# 8 以降で使用できるプロパティー対するパターンマッチングについての記事。
C# パターンマッチングのデコンパイルコードを確認する - Qiita
https://qiita.com/sh1ch/items/cd8a418ec2bf7f3eafb2
パターンマッチングを行うコードが実際にどのような形でコンパイルされているのかを SharpLab でデコンパイルすることで調べている記事。
An Overview of Distributed Tracing with OpenTelemetry in .NET 6
https://aaronstannard.com/opentelemetry-dotnet6/
【C#】マルチスレッド関連操作の詳説。 - ねののお庭。
https://blog.neno.dev/entry/2021/12/23/124215
C# / .NET でのマルチスレッドに関連するアトミック性のような問題とそれに対するメモリバリアーといった対処に関して詳しく説明している記事。
ライブラリ、リポジトリ、ツールなど
filipnavara/CodeSign
https://github.com/filipnavara/CodeSign
アプリケーションバンドルと Mach-O 実行ファイルに Apple Code Signing の署名をするツール。
github/super-linter: Combination of multiple linters to install as a GitHub Action
https://github.com/github/super-linter
GitHub Actions から様々な言語の Lint を実行するためのアクション。.NET は dotnet format に対応している。
Cysharp/NativeMemoryArray: Utilized native-memory backed array for .NET and Unity - over the 2GB limitation and support the modern API(IBufferWriter, ReadOnlySequence, scatter/gather I/O, etc...).
https://github.com/Cysharp/NativeMemoryArray
ネイティブメモリーを使用することで .NET の配列の最大サイズを超えるような大きなデータを扱えるようにするライブラリー。
サイト、ドキュメントなど
ツイート
D'oh! TIL that I can use monospace fonts on @github issues/PR/comments (Settings, Appearance tab at the bottom), I can't explain why it's not the default 🤔 pic.twitter.com/9A48vq6g8o
— Alexandre Mutel (@xoofx) December 22, 2021
GitHub.com の Issue や Pull request などで Markdown を記述するテキストエディター部分を等幅フォントに設定する項目があるという話。
C++/CLI has been officially purged from the Paint.NET codebase! I couldn't have done it without @tannergooding 's TerraFX.Interop.Windows package, which made it a breeze. Went way faster than I thought it would. pic.twitter.com/Si8MnJufsB
— Rick Brewster (@rickbrewPDN) December 18, 2021
Paint.NET から C++/CLI のコードがなくなったという話。
I don't recommend creating Kernel Mode drivers in C#, as it is highly experimental, but its possible.https://t.co/1d1iwQ4gjv
— VollRagm (@vollragm) December 18, 2021
This is another example, a Driver with memory reading and writing capabilities communication over a hooked function.
NativeAOT を使用して C# でカーネルモードドライバーを作ってみたという話。
Deep Dive
Improve .NET Productivity inner-loop performance · Issue #58268 · dotnet/roslyn
https://github.com/dotnet/roslyn/issues/58268
Roslyn / Visual Studio の .NET 生産性機能周りのパフォーマンス改善の Issue。