トピックス
paint.net 5.0 is now available!
https://forums.getpaint.net/topic/121643-paintnet-50-is-now-available/
Paint.NET 5.0 がリリースされた。
このリリースでは筆圧検知の対応、GPU を使用したレンダリングや画像処理、新しいエフェクトプラグインシステム、様々なパフォーマンスの向上や改善などが行われている。
また、.NET 7 を使用してビルドされるようになり、レガシーな C++/CLI コードは TerraFX.Interop.Windows に置き換えられたとのこと。
ReSharper 2023.1 Roadmap | The .NET Tools Blog
https://blog.jetbrains.com/dotnet/2023/01/10/resharper-2023-1-roadmap/
ReSharper 2023.1 のロードマップ。
- ショートカットのオーバーホール
- アウトオブプロセスへの移行
- 文法チェック
- 組み込みのスペルチェッカーから JetBrains Grazie への移行
- ユニットテスト自動化
- ローカリゼーション
- 簡体字中国語、日本語、韓国語
- UX/UI の再デザイン
- その他
- Web 開発
- 更新ダイアログ
Rider 2023.1 Roadmap | The .NET Tools Blog
https://blog.jetbrains.com/dotnet/2023/01/10/rider-2023-1-roadmap/
Rider 2023.1 のロードマップ。
- 設定の同期プラグイン
- Docker サポートの改善
- データベーススキーマ比較
- ゲーム開発
- Unity
- DOTS のサポート
- Unreal Engine
- Unity
- 文法チェック
- 組み込みのスペルチェッカーから JetBrains Grazie への移行
- その他
- パフォーマンス
- 新しい UI の調整
- ローカリゼーション
- 簡体字中国語、日本語、韓国語
Release v6.5.0 · domaindrivendev/Swashbuckle.AspNetCore
https://github.com/domaindrivendev/Swashbuckle.AspNetCore/releases/tag/v6.5.0
Swashbuckle.AspNetCore 6.5.0 がリリースされた。
このリリースではターゲットフレームワークに .NET 7 が追加されたほか、Swagger UI のアップデートが行われている。
Release Release v1.46.6 · grpc/grpc
https://github.com/grpc/grpc/releases/tag/v1.46.6
gRPC 1.46.6 (C-Core) がリリースされた。
このリリースでは zlib に関する脆弱性の対応といくつかの不具合の修正が行われている。
Release 6.9.0 · fluentassertions/fluentassertions
https://github.com/fluentassertions/fluentassertions/releases/tag/6.9.0
FluentAssertions 6.9.0 がリリースされた。
TimeOnly や型やメソッドなどのリフレクションなどに関するアサーションメソッドの追加。
アーティクル、スライドなど
【C#】DateTimeの和暦表示 - Qiita
https://qiita.com/ikuzak/items/b0fa005d267041890ed6
DateTime を和暦でフォーマットする際に R (令和) のようなアルファベットにする方法について。
C# で本当の非同期 IO
https://zenn.dev/k_taro56/articles/csharp-true-async-io
FileStream の非同期 I/O を使用するかどうかの useAsync
はデフォルトで false
となっているので非同期 I/O とならないことについて。
Inheritance Strategies in Entity Framework Core 7
https://medium.com/abp-community/inheritance-strategies-in-entity-framework-core-7-e0cfd42877a5
Entity Framework Core の継承したモデルの格納方法として EF 7 でサポートされた TPC (コンクリート型ごとのテーブル)とそれ以前からサポートされていた TPH, TPT についての簡単な紹介。
SQLitePCLRaw and open source sustainability
https://ericsink.com/entries/sqlitepclraw_sustainability.html
SQLitePCLRaw (SQLite のネイティブバインディング) を維持する上での現状や懸念点、利益など。
Parsing a template language with C# and Pidgin | Zach on Code
https://zachoncode.dev/blog/parsing-template-language-with-csharp-and-pidgin/
パーサーライブラリーの Pidgin を使用してテンプレート言語を実装する方法を解説。
ReactiveProperty v9.0.0 のプレリリース版を出してみました
https://zenn.dev/okazuki/articles/reactiveproperty-v9-0-0-pre1
ReactiveProperty v9.0.0 のプレリリースで行った改善や再構成、新しいクラスの追加などを解説。
The Road to Out-of-Process ReSharper: Asynchronous Typing | The .NET Tools Blog
https://blog.jetbrains.com/dotnet/2023/01/05/resharper-out-of-process/
ReSharper を Visual Studio とは別のプロセス(アウトオブプロセス)で動作させる形に移行するためのハードルや行なっていることを解説。
[オンデマンド版] .NET Conf 2022 Recap Event 東京 ~ Microsoft Japan Community Event Tour Series
.NET Conf 2022 Recap Event 東京 のセッションのオンデマンド動画。
フォルダの書き込みに管理者権限が不要かどうかをC#で判定する - Qiita
https://qiita.com/Alone-and-Slow/items/a2332bcb500051e19fbc
Windows 環境でフォルダーに対する書き込み権限があるかどうかを確認する方法。
Testing ASP.NET Core FastEndpoints | Khalid Abuhakmeh
https://khalidabuhakmeh.com/testing-aspnet-core-fastendpoints
ASP.NET Core 上に構築されたフレームワーク FastEndpoints を使用した際のユニットテストについての解説。
Implement a Custom Configuration Provider in .NET 7
https://medium.com/@gokerakce/implement-a-custom-configuration-provider-in-net-7-c0a195dcd05f
.NET 7 での Microsoft.Extensions.Configuration のカスタムの構成プロバイダーを実装する方法の解説。
記事では SQL Server から値を読み出し、再読み込みが可能なプロバイダーを実装している。
How to run disposable databases for your tests. Improve your integration tests accuracy with Testcontainers
Testcontainers を使用して使い捨てのデータベースを起動して、ユニットテストや統合テストを行う方法を解説。
Five shortcuts to boost your productivity - Visual Studio Blog
https://devblogs.microsoft.com/visualstudio/the-visual-studio-editor-can-do-that/
Visual Studio で生産性を高める5つのショートカットを紹介。
- Ctrl+D: 行の複製
- Ctrl+Shift+L: 行全体の削除
- Shift+Alt+.: 次の同じ単語を選択
- Alt+選択: ボックス(矩形)選択
- Alt+Ctrl+マウスクリック: 複数カーソルの挿入
Confusing .NET Debuggers: Proxy Objects
https://washi.dev/blog/posts/debugger-proxy-objects/
プロキシーオブジェクトを差し込むことで、逆コンパイラーやそれに付随したデバッガーなどを欺く手法について解説。
【C# 12 候補】ラムダ式のデフォルト引数と params 引数 | ++C++; // 未確認飛行 C ブログ
https://ufcpp.net/blog/2023/1/lambda-default/
C# 12の機能の候補であるラムダ式でのデフォルト引数と params 引数を許可する改善について。
Language Injection Improvements in Rider 2022.3 | The .NET Tools Blog
https://blog.jetbrains.com/dotnet/2023/01/12/language-injection-improvements-in-rider-2022-3/
Rider 2022.3 での言語インジェクションの改善の紹介。
生文字列リテラルでの対応や、文字列結合での補完文字列の対応、LanguageInjection 属性の対応、.NET 7 の StringSyntax 属性の対応など。
Debugging Encoded Text - Visual Studio Blog
https://devblogs.microsoft.com/visualstudio/debugging-encoded-text/
最新の Visual Studio プレビューで利用できるデバッガーのテキストビジュアライザーの紹介。
プレビューでのテキストビジュアライザーは Base64 や URL のエンコードとデコード、JWT のデコードを行った結果を表示できる。
Extracting metadata from a minimal API handler: Behind the scenes of minimal APIs - Part 2
Minimal API のエンドポイントのハンドラーとして渡される Delegate からどのようにしてメタデータを抽出し、RequestDelegate を作っているかを解説。
ライブラリ、リポジトリ、ツールなど
jellyfin/jellyfin: The Free Software Media System
https://github.com/jellyfin/jellyfin
Emby や Plex のような .NET で構築されたメディアサーバー。
JonPSmith/Net.LocalizeMessagesAndErrors: This library provides extra code to make it easier to support in different languages in your .NET application
https://github.com/JonPSmith/Net.LocalizeMessagesAndErrors
.NET アプリケーションのローカリゼーションの実装を支援するライブラリー。
LINQ Me Up
AI を使用して SQL の SELECT 文を LINQ に変換するツール。
サイト、ドキュメントなど
ツイート
C# はコンテキストキーワードが多いので一見予約語のような識別子を持つものを定義して変なコードを書けてしまうという話。
The .NET Community Stand up was fun today. Got to show viewers the evolution of code that leads us to the following being legal pic.twitter.com/PZNe9XT4Ij
— Jared Parsons (@jaredpar) January 12, 2023
.NET では同じ完全修飾名で同じアセンブリなのに同一プロセス内で異なる型として認識されるケースがあるという話。(AssemblyLoadContext が異なる場合など)。これは殆どのユーザーには問題がないが、Analyzer や Source Generator といった文脈で問題となることがある。
If you think that having two types with the same fully qualified name but diff assemblies in .NET is weird, wait until you have to deal with the same type in the same assembly having two different identities in the same process.
— Jared Parsons (@jaredpar) January 11, 2023