2021-12-10: dot.net in Japanese and Simplified Chinese, ReSharper & Rider 2021.3

Published on Friday, 10 December 2021

.NET の公式サイトである dot.net が日本語と簡体字に対応したそうです。まだすべてがすべて対応しきれていないとのことですが、大部分が日本語化されているようです。


ReSharper と Rider の 2021.3 がリリースされました。

どちらも .NET 6 / C# 10 の対応となるリリースで、特に Rider は macOS などでの開発には欠かせないものだけにリリースを待ち望んでいた方も多いかもしれません。

トピックス

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 等
  • その他
  • 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/プロキシーを生成するといったアプリケーションを分割してデプロイできる形にすることを支援する。

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 を扱えるようにするカーネル。

VincentH-Net/CSharpForMarkup: Build .NET browser / native UI in declarative C#

https://github.com/VincentH-Net/CSharpForMarkup

Declarative な形で WinUI や UnoPlatform 向けの UI を組み立てることのできるライブラリー。

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

C# の歴史 - C# ガイド

https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-version-history

C# 9 までの歴史をなぞっていくドキュメント。

ツイート

Visual Studio で dotnet new --install でインストールされたテンプレートからプロジェクトを作ると、テンプレートパラメーターを設定するための UI が自動で組み立てられるという話。

LINQPad で ASP.NET Core の Minimal API を使用する方法とデフォルトパッケージを設定する方法。

あらゆるオブジェクトを無理やりピン(固定)するテクニック。

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。