2022-09-14: WeekRef.NET 一周年, .NET on Windows Package Manager, .NET 6.0.9

Published on Wednesday, 14 September 2022

WeekRef.NET 一周年

WeekRef.NET を開始して1年が経ちました。更新頻度がまちまちになったり情報量の増減があったりしつつも続けることができて良かったですし、見てくださっている方々にとって少しでも役立っていれば嬉しい限りです。

とはいえ情報収集してまとめるのは結構労力と時間と気力が必要となっているところは課題なので、この先も続けていくことを考えるともう少し効率化をして行きたいなという気持ちはあります。

今後も引き続きよろしくお願いいたします。

トピックス

.NET now on Windows Package Manager - .NET Blog

https://devblogs.microsoft.com/dotnet/dotnet-now-on-windows-package-manager/

.NET が Windows パッケージマネージャーから取得できるようになった。

Windows パッケージマネージャー (winget) で .NET Core 3.1 と .NET 5.0, 6.0, 7.0 (プレビュー) を取得、インストールできるようになった。

winget search Microsoft.DotNet で利用可能なパッケージ(SDK やランタイム)の一覧を表示でき、winget install Microsoft.DotNet.SDK.6 といったコマンドでインストールできる。

winget 経由での更新プログラムはサポート対象となっている .NET に関しては受け取ることができるが、サポート対象外 (.NET 5.0 など) のものに関しては受け取れない。

.NET September 2022 Updates – .NET 6.0.9 and .NET Core 3.1.29 - .NET Blog

https://devblogs.microsoft.com/dotnet/september-2022-updates/

.NET 6.0.9 と .NET Core 3.1.29 がリリースされた。

.NET Core 3.1 および .NET 6.0 の ASP.NET Core におけるサービス拒否の脆弱性が修正されている。その他、.NET 6.0 には細かい修正と改善が含まれている。

Create a C# style guide: Write cleaner code that scales | Unity

https://resources.unity.com/games/create-code-style-guide-e-book

Unity による Unity を使用している開発者向けの C# スタイルガイドの E-book。

Microsoft の C# コーディングスタイル、フレームワークガイドラインを元にフォーマットや命名規則といったものをUnity 開発者向けにまとめたもの。コードのフォーマットに関する部分だけでなく、Unity 固有のシリアライゼーションやクラス、メソッドを作成する場合の心構えといったものも書かれている。

Arm64 Performance Improvements in .NET 7 - .NET Blog

https://devblogs.microsoft.com/dotnet/arm64-performance-improvements-in-dotnet-7/

.NET 7 の Arm64 でのパフォーマンス改善について解説している記事。

記事では以前のパフォーマンスの記事と同様に、ベンチマークコードや生成されるアセンブリなどを載せて解説している。

  • ランタイムの改善
    • L3 キャッシュサイズ
    • スレッドプールのスケーリング
    • LSE (Large System Extension) アトミック
    • Environment.ProcessorCount
    • ライブラリーの改善 (Vector などの intrinsics API)
    • テキスト処理の改善
    • Reverse の改善
  • コード生成の改善
    • アドレッシングモードの改善
    • メモリーバリアの改善
    • 式の巻き上げ
    • コードアライメントの改善
    • インストラクション選択の改善
    • メモリー初期化の改善
  • ツーリングの改善
  • 効果
  • ベンチマーク環境

ReSharper and Rider 2022.2.3 – The Latest Bug Fixes Are Here | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2022/09/13/resharper-and-rider-2022-2-3/

ReSharper と Rider 2022.2.3 がリリースされた。

このリリースでは機能面での変更はなく、ReSharper の InspectCode CLI に関する不具合や、Rider の安定性に関するいくつかの不具合が修正されている。

.NET Framework September 2022 Security and Quality Rollup - .NET Blog

https://devblogs.microsoft.com/dotnet/dotnet-framework-september-2022-security-and-quality-rollup/

.NET Framework の2022年9月のセキュリティー修正と品質ロールアップ更新がリリースされた。

このリリースではコードを実行される脆弱性の修正と System.Windows.Forms.InputLanguage クラスでオーバーフロー例外が発生する問題が修正されている。

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

【C#】Generics と null 比較と boxing。 - ねののお庭。

https://blog.neno.dev/entry/2022/09/05/151327

Generics での is null による比較で box 化が発生するかどうかについての記事。

記事では IL レベルでは box があるが、実際の JIT では発生しないこととその理由をコードと共に解説している。

.NET 7のPreviewを使ってDockerfileを使わずにコンテナをビルドしてみる。 - Qiita

https://qiita.com/karuakun/items/6fe1a127088dc90413a8

.NET 7 プレビューで dotnet publish から直接コンテナーイメージをビルドする機能を試してみるという記事。

【Unity】Source Generatorで自動生成されたコードをRiderで確認する方法 - Qiita

https://qiita.com/su10/items/a0d949f28860226acd2b

Rider で Source Generator によって生成されたコードを確認する方法についての記事。

Roslynアナライザ(+コード修正)を実装する - Qiita

https://qiita.com/ikuzak/items/2d4286079d1657269071

Roslyn を使用した Analyzer と CodeFix を Visual Studio で実装する方法について解説している記事。

C# / Blazor Wolfenstein - Part 1 - Blazor - James Randall

https://www.jamesdrandall.com/posts/csharp_blazor_wolfenstein_part_1/

F# に移植/実装してみた Wolfenstein 3D を C# と Blazor WebAssembly に移植してブラウザーで動かそうというシリーズ。

Working with System.Random and threads safely in .NET Core and .NET Framework

https://andrewlock.net/building-a-thread-safe-random-implementation-for-dotnet-framework/

System.Random を .NET Core と .NET Framework でスレッドセーフに扱う方法についての記事。

.NET 6 では Random.Shared を使用すること、.NET Core では ThreadStatic を使用したラッパーを用意すること、.NET Framework ではスレッドセーフにシードを取得する必要があることといったことに触れている。

.NET Annotated Monthly | September 2022 | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2022/09/06/net-annotated-monthly-september-2022/

JetBrains による .NET 関連情報2022年9月のまとめ。

MAUIにおけるUnpackagedアプリの作成方法 - Qiita

https://qiita.com/TkMaui/items/26e3be3bb5aeea87b183

.NET MAUI のアプリケーションを Unpackaged アプリ (インストーラーなし) として作るための設定についての記事。

Microsoft Store で 配布する WPF アプリのサイレントアップデート - Qiita

https://qiita.com/kobayashi_stmn/items/cf426c6b77f8fa529089

Microsoft Store で配布する WPF アプリケーションをサイレントアップデートできるように実装する方法についての記事。

.NET 7 NativeAOT でCPU主体の処理のベンチマークをしてみた

https://zenn.dev/remrem/articles/b9e5c9bde22e15

マンデルブロー集合を表示するプログラムを .NET 7 の NativeAOT でビルドして速度を確認してみたという記事。

Re:ゼロアロケーションから始めるP/Invoke - Qiita

https://qiita.com/gazf/items/a6f909b062e584878486

ネイティブライブラリーをゼロアロケーションで呼び出す (P/Invoke) 方法についての記事。

記事では SkipLocalsInit を使用してバッファーをクリアしない手法についても触れている。

Kubernetes Authentication Sidecars: A Revelation in Microservice Architecture

https://betterprogramming.pub/kubernetes-authentication-sidecars-a-revelation-in-microservice-architecture-12c4608189ab

Kubernetes 上のマイクロサービスでサイドカーに認証プロキシーを置くことで認証メカニズムそのものをアプリケーションに持たせないというアーキテクチャーについての記事。

.NET 6とVS CodeでAWS Lambdaする - Qiita

https://qiita.com/M_Kagawa/items/1fcd499caf3ccda2495f

.NET 6 と Visual Studio Code を使用して AWS Lambda のプロジェクトを作成、デプロイする方法についての記事。

Serializing asynchronous operations in C# - The Old New Thing

https://devblogs.microsoft.com/oldnewthing/20220912-30/?p=107168

非同期処理 (Task) を一つ一つ順番に実行していく仕組みを簡単に作るという記事。

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

xoofx/Varena: Varena is a .NET library that provides a fast and lightweight arena allocator using virtual memory.

https://github.com/xoofx/Varena

仮想メモリーを扱う軽量なアロケーターライブラリー。

modern-forms/Modern.Forms: Cross-platform spiritual successor to Winforms for .NET 6

https://github.com/modern-forms/Modern.Forms

WinForms を目標としたクラスプラットフォーム(Windows, macOS, Linux)実装ライブラリー。

現時点では開発の初期段階であり、WPF に対する Avalonia と同じような位置づけで WinForms に対応するものを目指しているとのこと。

JetBrains Rider .NET Watch Run Configuration Plugin | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2022/09/12/jetbrains-rider-net-watch-run-configuration-plugin/

Rider で dotnet watch を実行する設定を行えるようにするプラグイン。

dotnet watch を実行する際のオプションとして引数等の各種実行設定のほか、ホットリロードの有効/無効やアプリケーションが再起動が必要な編集を行った際に再起動を行うかどうかといった設定が行えるようになる。

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

The Good Parts of LibVLC

https://mfkl.gumroad.com/l/libvlc-good-parts

VLC のライブラリーである LibVLC についての解説電子書籍。

LibVLC に加えて .NET 向けのバインディングライブラリーである LibVLCSharp についても解説されているとのこと。

ツイート

.NET 7 の NativeAOT で静的データを事前に初期化する(実行時コードを含まない)最適化を行えるという話。

DeepDive

[release/6.0] Backport edge case fixes to XxHash32/XxHash64 by github-actions[bot] · Pull Request #73203 · dotnet/runtime

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

XxHash32 と XxHash64 のストリーミング処理 (ワンショットではないもの) で下記のケースで正しい結果を出さない問題の修正 PR (の 6.0 バックポート)。

  • XxHash32 と XxHash64 で元となるアルゴリズムのストライプサイズと同じ長さのデータチャンクを入れている場合
  • XxHash64 に 4GB を超えるデータを入力した場合