.NET の公式サイトである dot.net が日本語と簡体字に対応したそうです。まだすべてがすべて対応しきれていないとのことですが、大部分が日本語化されているようです。
- Announcing dot.net in Japanese and Simplified Chinese
- .NET のページが日本語化されました - Qiita
- ASP.NET Core で Portable Object のローカライズを構成する | Microsoft Docs
ReSharper と Rider の 2021.3 がリリースされました。
どちらも .NET 6 / C# 10 の対応となるリリースで、特に Rider は macOS などでの開発には欠かせないものだけにリリースを待ち望んでいた方も多いかもしれません。
- ReSharper 2021.3 Brings Visual Studio 2022 Support, More C# 10 Features, and Improved Support for Nullable Reference Types and C#! | The .NET Tools Blog
- Rider 2021.3: Support for .NET 6 SDK, Redesigned Main Toolbar and Debug Tab, and New Problems View Tab | The .NET Tools Blog
トピックス
Announcing dot.net in Japanese and Simplified Chinese
https://devblogs.microsoft.com/dotnet/dotnet-website-translation-updates/
.NET の公式サイト dot.net が日本語と簡体字に対応した。
記事では実際のローカライズにあたっての実装についても触れている。ローカライズの実装はいくつかのフェーズに分かれて行われたとのこと。
- フェーズ1: サイトを ASP.NET Core Razor Pages のローカライズの仕組みを使用して多言語対応する
- フェーズ2: 各言語の Portable Object ファイルで用意して Orchard Core を使用して適用する
- フェーズ3: サイトでカルチャを検出し、適切に振り分ける仕組みを用意する
現時点ではローカライズが完全ではない部分もあるので今後拡充していく予定であり、もしサイトの動作に問題があるようであればフィードバックしてほしいとのこと。
ReSharper 2021.3 Brings Visual Studio 2022 Support, More C# 10 Features, and Improved Support for Nullable Reference Types and C#! | The .NET Tools Blog
https://blog.jetbrains.com/dotnet/2021/12/08/resharper-2021-3/
ReSharper 2021.3 がリリースされた。
ReSharper 2021.3 では次の新機能と改善が含まれている。
- Visual Studio 2022 のサポート
- C# 10 に関する機能
- Nullable reference types のサポートの改善
- C# コード解析に関する全般的な改善
- 継承に関するナビゲーションとユーザー定義の暗黙的変換に対する Find Usages 等
- その他
LanguageInjection
属性によるメンバー等に対するコード補完の有効化- Copy Code Reference のリデザイン
- AnalyzerConfig のサポート
- ReSharper C++
- C++ 20 や Unreal Engine クラスのサポートなど
Rider 2021.3: Support for .NET 6 SDK, Redesigned Main Toolbar and Debug Tab, and New Problems View Tab | The .NET Tools Blog
https://blog.jetbrains.com/dotnet/2021/12/08/rider-2021-3-released/
Rider 2021.3 がリリースされた。
Rider 2021.3 では次の新機能と改善が含まれている。
- .NET 6 のサポートとホットリロード
- 新しい Run/Debug ウィジェットを持つリデザインされたメインツールバー
- デバッグ体験の向上
- Problems View ツールウィンドウの追加
- コード解析のアップデート
- C# 10 に関する機能
- Nullable reference types のサポートの改善
- SQL 言語のサポートの向上
- Unity 向けのアップデート: Assembly Definition ファイルのサポート
- その他
- Apple Silicon のサポート
- Xamarin 向けの Plist エディターでの Xcode 標準のスキームのサポートの向上
- .NET Framework プロジェクトでの NuGet パッケージのバインディングリダイレクトの生成
- F# 6 のサポート
- Reformat and Cleanup on Save 設定の追加
- 新しい Bookmark ウィンドウ
Release Ix.NET v5.1.0 · dotnet/reactive
https://github.com/dotnet/reactive/releases/tag/ixnet-v5.1.0
Ix.NET (Interactive Extensions) の 5.1.0 がリリースされた。
.NET 6 の LINQ に追加された Min/Max/MinBy/MaxBy といったオペレーターが .NET 6 向けのビルドには含まれないようになるといった対応が行われている。
AWS Microservice Extractor for .NET のご紹介
https://aws.amazon.com/jp/about-aws/whats-new/2021/11/aws-microservice-extractor-net/
ASP.NET (.NET Framework) のアプリケーションを解析し、マイクロサービス化された形に再構成などを行う AWS Microservice Extractor for .NET というツールがリリースされた。
このツールは既存のアプリケーションを解析し、各種ロジックの呼び出しを抽出してリモート呼び出しの形にするための API/プロキシーを生成するといったアプリケーションを分割してデプロイできる形にすることを支援する。
- .NET Microservices – AWS Microservice Extractor for .NET – Amazon Web Services
- モノリシックなASP.NETアプリケーションのモダナイゼーションを支援する AWS Microservice Extractor for .NETを使ってみた #reinvent | DevelopersIO
- Hello AWS Microservice Extractor for .NET, Let's Work on that Legacy App
Release v6.0.1 · npgsql/npgsql
https://github.com/npgsql/npgsql/releases/tag/v6.0.1
Npgsql 6.0.1 がリリースされた。
新機能の追加はなくバグ修正といくつかの改善が行われている。
アーティクル、スライドなど
System.Text.Json を試してみる on .NET 6
https://zenn.dev/okazuki/articles/system-text-json-on-dotnet6
.NET 6 の System.Text.Json をソースジェネレーターを含めて使用する手順についての記事。
dotnet format を CI で行って継続的にコードフォーマットしていく - tech.guitarrapc.cóm
https://tech.guitarrapc.com/entry/2021/12/07/232921
C# のプロジェクトに対して CI で継続的にコードフォーマットをかける方法についての記事。
記事では dotnet format
を GitHub Actions によって定期的に実行し、Pull request の形にするといった手法を解説している。
【C# 10.0 関連】引数なしコンストラクターの Activator バグ
https://ufcpp.net/blog/2021/12/activator-net48
C# 10 では引数なしコンストラクターを持つ構造体を定義できるようになったが、.NET Framework 4.x ではその構造体を Activator によってインスタンスを生成すると正しく動作しないことがあることについての記事。
[レポート] 用途に合わせたデータベースを使って.NETアプリケーションをモダナイズする #XNT304 #reinvent | DevelopersIO
https://dev.classmethod.jp/articles/reinvent-2021-report-xnt304/
AWS で使用可能なデータベースサービスと .NET アプリケーションの組み合わせについての re:Invent のセッションのまとめ記事。
What's new for gRPC in .NET 6
https://devblogs.microsoft.com/dotnet/grpc-in-dotnet-6/
.NET 6 での gRPC の新機能についての記事。
記事ではクライアントロードバランシングやリトライ、Protobuf のパフォーマンス向上、ダウンロード速度の向上、HTTP/3 の対応などについて触れている。なお、記事では触れていないがクライアントロードバランシングは現時点ではリリースされていない。
GitHub上のsensitive dataを削除するための手順と道のり
https://engineering.mercari.com/blog/entry/20211207-removing-sensitive-data-from-github/
GitHub に上げてしまったセンシティブな情報を削除するための手順とその中で得られた知見やサポートとのやり取りなどを解説している記事。
【翻訳記事】Pipelines - .Net の新しい IO API のツアーガイド, part 1 - - Qiita
https://qiita.com/hitoshi44/items/7a05c607a53dcad704f9
System.IO.Pipelines に関する Mark Gravell 氏のガイド記事(2018年)の翻訳。
System.IO.Pipelines がどういったもので何ができるのかといった話が書かれている。ちなみにこの翻訳記事は Nim Advent Calendar 2021 の記事。
WPF アプリを Microsoft Store に申請・登録する(開発者登録編) : 翔星 Be ランド日記
https://shinta0806be.ldblog.jp/archives/10462152.html
WPF アプリケーションを Microsoft Store でリリースするための申請と登録の手順に関する記事。
Regional Indicator (国旗絵文字)
https://ufcpp.net/blog/2021/12/regional-indicator/
混沌としている国旗絵文字の仕様に関する記事。
[レポート] AWSで高性能の.NETサーバーレスアーキテクチャを構築する #XNT401 #reinvent | DevelopersIO
https://dev.classmethod.jp/articles/reinvent-2021-report-xnt401/
AWS の Lambda で .NET を使用した際にパフォーマンスを向上させるためのポイントを解説する re:Invent のセッションのまとめ記事。
.NET6でHTTP/3を扱ってみる - Qiita
https://qiita.com/nao-a/items/15de66d1d05146a04506
.NET 6 環境で HTTP/3 を有効化し、実際にクライアントとサーバーを用意してアクセスするまでの手順をまとめた記事。
【C#】FFmepg APIで動画プレーヤーを1からつくってみる(前編) - Qiita
https://qiita.com/Kujiro/items/78956f5906538b718ffb
FFmpeg の API を直接使用して動画をデコードして WPF 上で再生できるようにするまでの手順とコードを解説した記事。
(C#) async/await を理解する - ネコのために鐘は鳴る
https://ikorin2.hatenablog.jp/entry/2021/12/05/072126
C# の async/await の処理の流れについて主に UniTask (Unity) の視点で解説した記事。
VSCode + .NET Interactive で PowerFx を体験してみよう - Qiita
https://qiita.com/karuakun/items/5e34b341e7418dcbea72
Visual Studio Code 上の .NET Interactive で PowerFx を動かして試してみるという記事。
neue cc - .NET 6とAngleSharpによるC#でのスクレイピング技法
https://neue.cc/2021/12/04.html
Web サイトをスクレイピングするにあたって AngleSharp の使用方法についての解説記事。
ウォッチウィンドウのような実装時のデバッグ手法といった点にも触れている。
【C#】知られざる比較の高速化戦略 - Qiita
https://qiita.com/Kujiro/items/e687b089a0348d989f1b
String (文字列)の比較速度についての記事。
記事では純粋な for で比較するところから .NET ランタイムの文字列比較実装のパフォーマンスに近づけるために、どのような実装が行われているのかを確認しながら深掘りしている。
pythonnetについて - Qiita
https://qiita.com/ppza53893/items/ea129ce7c6dd90ce120e
Python から .NET Framework (または Mono) を呼び出すためのライブラリーを紹介している記事。
.NET Annotated Monthly | December 2021 | The .NET Tools Blog
https://blog.jetbrains.com/dotnet/2021/12/09/net-annotated-monthly-december-2021/
JetBrains による .NET 関連の記事や情報のまとめの12月号。
.NET 6 vs .NET 4.8 GC stats - ~64% shorter max GC pause times (due to 1 letter removed in runtime)
https://nietras.com/2021/11/26/dotnet-6-vs-4-8-gc-stats/
.NET 6 と .NET Framework 4.8 での GC の比較で .NET 6 では性能が改善されているが、特に停止時間のワーストケースがとても小さくなっていることについての記事。
これはハイジャックされたスレッドから戻ってくることに関連したパラメータを1文字変更した(10ms→1ms)ことで早期に戻れるようになったのが影響しているとのこと。
Don't Do That, Do This: The .NET 6 Edition
https://www.daveabrock.com/2021/12/08/do-this-not-that-the-net-6-edition/
.NET 6 ですべきでないこと、すべきことをまとめた記事。
- 大きなコレクションをチャンクにする場合には自前処理ではなく LINQ の Chunk を使用する
- 日付が必要なだけであれば DateOnly を使用する
- HTTP のログを取るには独自のミドルウェアではなく組み込みの AddHttpLogging を使用する
- Blazor では ErrorBoundary を使用する
- Kestrel のログを制御して吐くようにするのであればサブカテゴリーを使用する
- file-scoped namespaces や拡張プロパティパターンを使用する
EventCounterについて - Qiita
https://qiita.com/skitoy4321/items/0b68e03f82ae214bf572
.NET の組み込みの統計情報収集の仕組みの EventCounter についての解説記事。
ASP.NET Core Identity 2FA with Google Authenticator
https://dev.to/mohammedahmed/aspnet-core-identity-2fa-with-google-authenticator-i13
ASP.NET Core Identity で二要素認証 (Google Authenticator) を使用する実装についての記事。
Creating an incremental generator: Creating a source generator - Part 1
https://andrewlock.net/creating-a-source-generator-part-1-creating-an-incremental-source-generator/
.NET 6 / Visual Studio 2022 でサポートされた Incremental Source Generator (IIncrementalGenerator
) を実装する方法についてステップバイステップで解説している記事。
dotnet-6.0におけるNativeAOTについて - Qiita
https://qiita.com/yaju/items/d5a771f3f00672aa19ff
.NET 6 での NativeAOT (Experimetal) を使用してネイティブバイナリーを出力する手順について解説している記事。
ライブラリ、リポジトリ、ツールなど
rickbrew/PointerToolkit: Provides structs that wrap pointers, and Unsafe methods for converting to and from ref
pointers of any type.
https://github.com/rickbrew/PointerToolkit
ポインターのラッパーやユーティリティーを提供するライブラリー。Paint.NET で COM との相互運用に利用するために用意したライブラリーとのこと。
vzarytovskii/interactive-ilkernel: IL Kernel for .NET Interactive
https://github.com/vzarytovskii/interactive-ilkernel
.NET Interactive で MSIL を扱えるようにするカーネル。
Is writing IL in .NET Interactive exactly what you wanted your whole life?
— Vlæd Za (@vzarytovskii) December 6, 2021
Good news! Now you can (very much experimental though, highlighting, data sharing, diagnostics are still TBD).
Based on amazing work by @konradkokosa (Mobius.ILASM):https://t.co/8INILatD6N#dotnet pic.twitter.com/zdeYiByD79
VincentH-Net/CSharpForMarkup: Build .NET browser / native UI in declarative C#
https://github.com/VincentH-Net/CSharpForMarkup
Declarative な形で WinUI や UnoPlatform 向けの UI を組み立てることのできるライブラリー。
In case you missed the announcement of
— VincentH.NET (@vincenth_net) December 2, 2021
📢C# Markup 2 for WinUI + Uno Platform
at UNOCONF, here it is:https://t.co/2ukYE96JV7#CSharpForMarkup #WinUI3 @UnoPlatform #unoconf pic.twitter.com/bG5tN8xpWx
サイト、ドキュメントなど
C# の歴史 - C# ガイド
https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-version-history
C# 9 までの歴史をなぞっていくドキュメント。
ツイート
TIL: Templates installed with `dotnet new --install` are available in the #VisualStudio.
— 🛠 Cezary Piatek (@cezary_piatek) December 4, 2021
The really cool thing is the auto-generated UI for filling template parameters#dotnet #dotnetcore pic.twitter.com/ZCVsNy5noC
Visual Studio で dotnet new --install
でインストールされたテンプレートからプロジェクトを作ると、テンプレートパラメーターを設定するための UI が自動で組み立てられるという話。
.NET 6のASP .NET Minimal APIをLINQPadで立てると、さっくりとテスト用のエコーサーバーが作れて便利。LINQPadでの ASP .NET Coreの有効化はQuery Propertiesの右下のチェックボックスから(デフォはオフ)。Set as default for new queriesにはよく使うNuGetライブラリも登録しておくとより便利。 pic.twitter.com/vm8tleAnx5
— neuecc (@neuecc) December 3, 2021
LINQPad で ASP.NET Core の Minimal API を使用する方法とデフォルトパッケージを設定する方法。
Pinnable object pattern in C# / .NET is this neat little trick to pin (fix) almost any kind of object without having to specify its concrete bitable field to pin on.#dotnet pic.twitter.com/fgkbl5hja5
— Bartosz Adamczewski (@badamczewski01) December 9, 2021
あらゆるオブジェクトを無理やりピン(固定)するテクニック。
Deep Dive
API proposal implementation: DirectoryInfo.Copy / Directory.Copy by deeprobin · Pull Request #62375 · dotnet/runtime
https://github.com/dotnet/runtime/pull/62375
ディレクトリーをコピーする API を追加する PR。
Support for devirtualizing array interface methods by AndyAyersMS · Pull Request #62497 · dotnet/runtime
https://github.com/dotnet/runtime/pull/62497
配列のインターフェースアクセスに対する devirtualize をサポートする PR。
Incremental Generator Work Tracking API Implementation by jkoritzinsky · Pull Request #55469 · dotnet/roslyn
https://github.com/dotnet/roslyn/pull/55469
Incremental Source Generator のステップ間で増分などの状態を追跡できるようにする仕組み。
Remove unnecessary unicode control characters by omajid · Pull Request #38900 · dotnet/aspnetcore
https://github.com/dotnet/aspnetcore/pull/38900
ASP.NET Core の一部のソースコードに紛れ込んでいる Unicode 制御文字を削除する PR。
最近 Unicode 制御文字によってコードに脆弱性を埋め込めるといった話題がでていて、GitHub 上でも該当ファイルに警告が出ている。
S.IO.StringReader: Use ReadOnlySpan.IndexOfAny in ReadLine() for performance by nietras · Pull Request #60463 · dotnet/runtime
https://github.com/dotnet/runtime/pull/60463
System.IO.StringReader での ReadLine で ReadOnlySpan<char>.IndexOfAny
を使うようにしてパフォーマンスを改善したという PR。
Add support for per request input/output results cache files by xoofx · Pull Request #7121 · dotnet/msbuild
https://github.com/dotnet/msbuild/pull/7121
ファイルの I/O 周りをキャッシュして並列化できるようにしたところ100プロジェクトのビルドが3~10倍ぐらいまで高速化できたというご提案 PR。
I have further improved msbuild by forking it and making it possible to use input/output caches on msbuild nodes. It compiles 100 interdependent C# projects in 3s while Visual Studio/raw msbuild would take a bit more than 7s to 10s, that's pretty cool! 😎https://t.co/qvO3lh1xu8
— Alexandre Mutel (@xoofx) December 3, 2021