2023-01-20: .NET 7.0.2 & 6.0.13, ReSharper & Rider 2023.1 EAP 1, Visual Studio 2022 17.5 Preview 3, .NET Community Toolkit 8.1, DigiD code made public

Published on Friday, 20 January 2023

トピックス

.NET January 2023 Updates – .NET 7.0.2, .NET 6.0.13 - .NET Blog

https://devblogs.microsoft.com/dotnet/january-2023-updates/

.NET 7.0.2 と .NET 6.0.13 がリリースされた。

このリリースでは .NET 6 の DoS 脆弱性が修正されている。この脆弱性は公開されたエンドポイントに悪意あるリクエストを送信することでスタックオーバーフローを発生させ、サービス拒否攻撃が可能となるもの。

ReSharper 2023.1 Starts Its Early Access Program | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2023/01/19/resharper-2023-1-eap-starts/

ReSharper 2023.1 の EAP (早期アクセスプロブラム) が開始となった。

ReSharper 2023.1 EAP 1 では #region のクイックフィックスや Span.SequenceEquelis への書き換えといったコードインスペクションの改善、C++ サポートの改善が含まれている。

Rider 2023.1 Early Access Program Has Started | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2023/01/19/rider-2023-1-eap-start/

Rider 2023.1 の EAP (早期アクセスプロブラム) が開始となった。

Rider 2023.1 EAP 1 では Unity の API のポップアップからドキュメントへのリンクや Unreal Engine での新しいクラス作成時の UI の再実装、Docker の高速モードサポート、 #region のクイックフィックスや Span.SequenceEquelis への書き換えといったコードインスペクションの改善、メインツールバーの UI 修正が含まれている。

Visual Studio 2022 17.5 Preview 3 is here! - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-5-preview-3-is-here/

Visual Studio 2022 17.5 Preview 3 がリリースされた。

  • 全般的な IDE シェル、Git、エディター、デバッガー、診断
    • アクセシビリティチェッカー
    • スペルチェッカー
    • 外部ソースデバッグの改善
      • 逆コンパイルパフォーマンスの向上
    • Markdown のデフォルトエディター化
    • VS インテントベースの提案
    • Microsoft.Data.SQL.Client を使用した SQLServer への接続
  • .NET
    • Razor ファイルでの HTML コードアクションのサポート
      • タグの削除、画像の Base64 エンコード、画像の幅と高さの挿入
    • Razor および Roslyn のパフォーマンス改善
      • プロジェクト構成切り替え、コード分析の高速化、UI 遅延を減らすための入力改善
    • より速いインクリメンタルビルドのためのビルド高速化
  • C++
    • ブレースのペアの色付け
    • ターミナルで開発コンテナー(devcontainer)を開く
  • セットアップ
    • winget での Visual Studio パッケージの改善

Announcing .NET Community Toolkit 8.1! Better, faster MVVM source generators, .NET 7 support, and more! - .NET Blog

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

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

ObservableProperty へのカスタム属性、MVVM Toolkit アナライザー、MVVM Toolkit Source Generator の最適化、IObservable<T> メッセンジャー拡張、.NET 7 と C# 11 のサポート。

MinBZK/woo-besluit-broncode-digid-app

https://github.com/MinBZK/woo-besluit-broncode-digid-app

オランダの DigiD というアプリケーションがオープンソースとして公開された。(国のアプリで、政府の透明性維持活動の一環と思われる)

1500万ユーザーのアクティブユーザーがいるアプリケーションで、Xamarin.Forms 製とのこと。

Release 7.0.58 Service Release 2 · dotnet/maui

https://github.com/dotnet/maui/releases/tag/7.0.58

.NET MAUI 7.0.58 Service Release 2 がリリースされた。

このリリースでは様々な不具合の修正や Windows App SDK の更新などが行われている。

.NET Framework January 2023 Cumulative Update Preview - .NET Blog

https://devblogs.microsoft.com/dotnet/dotnet-framework-january-2023-update/

.NET Framework の2023年1月の累積アップデートプレビューがリリースされた。

このリリースでは WPF のいくつかの不具合と、Socket で稀に発生する問題が修正されている。

Visual Studio Spell Checker Preview Now Available - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/visual-studio-spell-checker-preview-now-available/

Visual Studio のプレビューで使用できるようになったスペルチェッカーについての紹介。

記事ではスペルチェッカーの使用方法やどのようなパターンでどのようにチェックされるか、カスタマイズの方法といったことについて紹介している。

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

【C# 12 候補】IEnumerable 向けリスト パターン | ++C++; // 未確認飛行 C ブログ

https://ufcpp.net/blog/2023/1/list-pattern-enumerable/

C# 12 候補となっている IEnumerable 向けのリストパターンマッチを紹介している。

【C# 12 候補】半自動プロパティ | ++C++; // 未確認飛行 C ブログ

https://ufcpp.net/blog/2023/1/semi-auto-property

C# 12 候補となっている半自動プロパティ (バッキングフィールドのみ自動生成) を紹介している。

初期化子やオーバーライド時の挙動などについても解説している。

Beginners Guide to Get Started with Smart Contract in C#

https://dev.to/satyakarki/beginners-guide-to-get-started-with-smart-contract-in-c-3c7e

Stratis という C# でスマートコントラクトを実装可能なプラットフォームを使用してスマートコントラクトを実装することを紹介。

.NET Native AOT

https://ericsink.com/native_aot/index.html

Native AOT についての解説やサンプルコードを取り扱うシリーズ。

Top 10 bugs found in C# projects in 2022

https://pvs-studio.com/en/blog/posts/csharp/1020/

2022年に PVS-Studio の開発者が見つけて記事にしていたオープンソースプロジェクトのバグの Top 10 をまとめたもの。

Securing Sensitive Information with .NET User Secrets | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2023/01/17/securing-sensitive-information-with-net-user-secrets/

.NET User Secrets を使用してローカルでの機密情報の保存とアプリケーションからの使用についての紹介。

JetBrains Rider でのシークレットの管理とアプリケーションからの使用方法を紹介している。

New: Better search in Visual Studio - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/new-better-search-in-visual-studio/

Visual Studio でプレビューとなっている新しいオールインワン検索についての紹介。

Rate Limiting with ASP.NET Core 7.0

https://medium.com/abp-community/rate-limiting-with-asp-net-core-7-0-e7834a94b8c5

.NET 7 でのレートリミット API の紹介と ASP.NET Core で使用する方法について。

Exploring the model-binding logic of minimal APIs: Behind the scenes of minimal APIs - Part 3

https://andrewlock.net/behind-the-scenes-of-minimal-apis-3-exploring-the-model-binding-logic-of-minimal-apis/

Minimal API でのモデルバインディングの仕組みを解説。

記事ではどのような流れで受け取ったリクエストをハンドラーの引数にバインドするかといった仕組みと流れを解説している。

Multiple File Drag and Drop Upload with ASP.NET Core | Khalid Abuhakmeh

https://khalidabuhakmeh.com/multiple-file-drag-and-drop-upload-with-aspnet-core

複数のファイルをドラッグアンドドロップでアップロードする Razor ページを実装する方法について。

Reading “object” in memory - starting with stacks

https://chnasarre.medium.com/reading-object-in-memory-starting-with-stacks-aaef54bd521d

診断プロトコルの nettrace で受信できるオブジェクトのペイロードを読み取る方法についての解説。

Learn DateOnly & TimeOnly

https://dev.to/karenpayneoregon/learn-dateonly-timeonly-23j0

DateOnly と TimeOnly の基本の紹介と、Json.NET, System.Text.Json などのライブラリーでの対応について。

PropertyChangedEventManagerはスレッドプールでは失敗する - Qiita

https://qiita.com/emoacht/items/3f7e216b43431e960751

PropertyChangedEventManagerAddListener/RemoveListener は同じスレッドから呼び出す必要があることについて。

[C#] Dictionary(HashTable)を自作して理解する

https://zenn.dev/fugi/articles/d2a5ef35e4190f

Dictionary のような構造を実装して、ハッシュの扱いを理解してみるという試み。

非同期メイン関数でスレッドアパートメントがSTAにならない

https://zenn.dev/nin_neko/articles/6f08f2fdace43f

エントリーポイントに STAThread 属性をつけていても、async Task と非同期メソッドになっている場合、スレッドアパートメントが STA に設定されないことについてとその対処方法。

【.NET】設定ファイル(例 appsettings.json)にコメント書けるってよ - Qiita

https://qiita.com/yaju/items/35d94a20e8e3e8ca268c

Microsoft.Extensions.Configuration.Json (appsettings.json など) は JavaScript または C# スタイルのコメントを JSON に書くことが許可されていることについて。

ASP.NET Core でカスタム検証属性を作成する - Qiita

https://qiita.com/gushwell/items/d659027304645b30b805

ASP.NET Core で ValidationAttribute を使ったカスタム検証属性を実装する方法について。

The evolution of delegate performance in .NET

https://medium.com/@skyake/the-evolution-of-delegate-performance-in-net-c8f23572b8b1

.NET 7 で行われた PGO によるデリゲートの最適化についての解説。

Track your coding progress on GitHub with a .NET Worker Service

https://dev.to/sannae/track-my-coding-progress-on-github-with-a-net-worker-service-49g4

GitHub で自分のリポジトリーの言語統計を取る仕組みをワーカーサービスとして実装してみる例。

using alias を任意の型に対応 | ++C++; // 未確認飛行 C ブログ

https://ufcpp.net/blog/2023/1/using-alias-any-types/

using によるエイリアスで定義できるものを拡張するという提案についての解説。

Profiling .NET on Linux with BenchmarkDotNet

https://adamsitnik.com/PerfCollectProfiler/

BenchmarkDotNet を使用して Linux 上で .NET のプロファイリングをする方法について。

0.13.3 で導入された PerfCollectProfiler プラグインによって PerfView や SpeedScope、perf ファイルをサポートするツールで開ける形でプロファイリング結果をエクスポートできる。

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

Dots - the friendly .NET SDK manager - Johnnys.News

https://johnnys.news/2023/01/Dots-a-dotnet-SDK-manager

様々な .NET SDK のインストール、アンインストールを行える GUI ツール。

VeloxDB/VeloxDB: An object oriented database for building next generation solutions with .NET and C#.

https://github.com/VeloxDB/VeloxDB

C# で記述された .NET 向けオブジェクト指向データベース。

otterkit/otterkit: Otterkit COBOL Compiler

https://github.com/otterkit/otterkit

.NET プラットフォーム向け ISO COBOL 2022 のコンパイラーとランタイム実装。

StableDiffusionDiscordBot

https://stablediffusiondiscordbot.azurewebsites.net/

Stable Diffusion などで AI 画像生成を行う Discord Bot とそのサイト。

Marplex/WpfSnowfall: Fully customizable WPF snowfall control

https://github.com/Marplex/WpfSnowfall

WPF アプリケーションで雪を降らせることのできるコントロール。

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

ベースライン パッケージ検証コントロール - .NET | Microsoft Learn

https://learn.microsoft.com/ja-jp/dotnet/fundamentals/package-validation/baseline-version-validator

.NET 6 以降で導入された NuGet のパッケージ検証機能について説明。

NuGet パッケージを作成時に指定したベースラインバージョンからの API の破壊的変更を検出することができる。

ML.NET チュートリアル | 10 分で始める | .NET

https://dotnet.microsoft.com/ja-jp/learn/ml-dotnet/get-started-tutorial/intro

ML.NET を使用してテキストのポジティブ/ネガティブを判定するチュートリアル。

ツイート

.NET 8 の Kestrel で名前付きパイプをサポートするという話。