2021-12-24: Npgsql 6.0.2, AWS Toolkit for Visual Studio 2022, MAUI 6.0.101-preview.11

Published on Friday, 24 December 2021

トピックス

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 がリリースされた。

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 の配列の最大サイズを超えるような大きなデータを扱えるようにするライブラリー。

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

ツイート

GitHub.com の Issue や Pull request などで Markdown を記述するテキストエディター部分を等幅フォントに設定する項目があるという話。

Paint.NET から C++/CLI のコードがなくなったという話。

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。