2022-04-26: C# on Oracle Functions, ReSharper/Rider 2022.1, grpc-dotnet 2.45

Published on Tuesday, 26 April 2022

トピックス

Support for C# - Oracle Cloud Infrastructure Release Notes

https://docs.public.oneportal.content.oci.oraclecloud.com/en-us/iaas/releasenotes/changes/fe5ea60e-412f-453e-b3f5-91c8f79140f2/

Oracle Functions のサポート言語として C# が追加され、C# での開発が行えるようになった。

言語サポートのページによればランタイムは現時点で .NET Core 3.1 のみがサポートされているとのこと。

Rider 2022.1 Comes With Full Unreal Engine Support and Remote Development | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2022/04/19/rider-2022-1/

Rider 2022.1 がリリースされた。

記事で紹介されている新機能、改善は次のようなものがある。

  • Unreal Engine と Unity でのゲーム開発の統合
    • Unity プロジェクトの読み込み時間の改善
    • .asmref/.asmdef といったアセンブリ参照/定義ファイルのサポートの向上
  • リモート開発 (Beta)
    • JetBrains Gateway でのリモート開発に対応
  • その他
    • 新しいツールバーのカスタマイズ
    • Docker および docker-compose の高速モード
    • "Search Everywhere" での全文検索
    • C# 10 のサポート: global using へのリファクタリングの対応など
    • .NET 6 の新しい属性のサポート: EditorRequired
    • 新しい通知ツールウィンドウ
    • 新しいズームウィジェット
    • .NET と .NET Core プロジェクトへの Web 参照の追加機能
    • バージョンコントロール: Preview Diff アイコンをツールバーから歯車メニューに移動し Show Diff Preview on Single Click にリネーム

その他細かい新機能や改善は別ページにまとまっているので参照のこと。

ReSharper 2022.1 Released | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2022/04/19/resharper-2022-1/

ReSharper 2022.1 がリリースされた。

  • C# のサポートの向上
    • global using に関連するリファクタリングの追加
    • null 許容参照型のサポート強化
    • C# 11 のジェネリック属性の実装
  • 機能
    • Endpoints として ASP.NET Core の Minimal API と規約ベースのルーティングをサポート
    • Razor と Blazor では Razor 内でのローカル関数サポートやナビゲーションの追加
    • フォーマッティングのアクションの整理
  • パフォーマンス
  • デコンパイラー
    • XML ドキュメントコメントのプラットフォームアセンブリなどのサポート
    • Assembly Explorer での転送された型 (forwarded types) のサポート
  • バグ修正
  • ReSharper C++
    • Unreal Engine のサポート
  • dotTrace, dotCover, dotMemory

Release Release v2.45.0 · grpc/grpc-dotnet

https://github.com/grpc/grpc-dotnet/releases/tag/v2.45.0

gRPC (.NET) の 2.45.0 がリリースされた。

WriteAsync メソッドで CancellationToken がサポート、再接続バックオフの構成といった改善のほか、いくつかの不具合が修正されている。

Release Diagnostics Release - v6.0.320703 · dotnet/diagnostics

https://github.com/dotnet/diagnostics/releases/tag/v6.0.320703

.NET の診断ツール v6.0.320703 がリリースされた。

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

The future of .NET and Unity | Unity at GDC 2022

https://m.youtube.com/watch?v=6UiKtnDQeEg

GDC 2022 における Unity の .NET ランタイムとエコシステムに関する今後についてのセッション。

セッションでは MSBuild/SDK-style プロジェクトについてや、CoreCLR への移行について、Unity での async/await 対応についてといった点に触れている。

Using C# and Auto ML in ML .NET to Predict Video Game Ratings

https://dev.to/integerman/using-c-and-auto-ml-in-ml-net-to-predict-video-game-ratings-j8j

ML.NET/Auto ML と C# を使用してゲームの ESRB レーティングラベル予測するものを作ってみるという記事。

View .NET collections with the new IEnumerable Debugger Visualizer

https://devblogs.microsoft.com/visualstudio/view-net-collections-with-the-new-ienumerable-debugger-visualizer/

Visual Studio 2022 17.2 Preview 2 で強化された、デバッグ時に IEnumerable をビジュアライズする機能についての記事。

記事ではプロパティーの展開、複数の IEnumerable の実装の切り替え、ソートとエクスポートといった機能について触れている。

'Alternative to Blazor' Wisej 3 Ships -- Visual Studio Magazine

https://visualstudiomagazine.com/articles/2022/04/21/wisej-3.aspx

ASP.NET 上に構築された C# ベースで Web アプリケーションを構築する有償フレームワーク Wisej 3 がリリースされたことについての記事。

Wisej 3 は C# のみでインタラクティブな Web アプリケーションを構築できるという意味で Blazor の代替に近い位置づけとなるフレームワーク。なお、Wisej 3 は .NET Framework 4.8 と .NET 6 で利用できるマルチターゲットなフレームワークとしてリリースされている。

Blazor の EditForm で ReactiveProperty を使う

https://zenn.dev/okazuki/articles/reactiveproperty-editform

Blazor の EditForm の入力値検証で ReactiveProperty を使用する方法についての記事。

Use browser dev tools with Blazor Hybrid

https://dev.to/rogihee/use-browser-dev-tools-with-blazor-hybrid-18nh

MAUI Blazor Hybrid をデプロイしたモバイル環境(エミュレーターなど)に対して Microsoft Edge の DevTools を接続する方法についての記事。

Running JavaScript inside a .NET app with JavaScriptEngineSwitcher

https://andrewlock.net/running-javascript-in-a-dotnet-app-with-javascriptengineswitcher/

.NET アプリケーションで JavaScript を動作させたいケースで使用できる様々な JavaScript のエンジンを抽象化/ラップする JavaScriptEngineSwitcher についての記事。

記事では Jurassic (ピュア .NET 実装のエンジン) を使用して JavaScript を実行する例を載せている。

.Net Core Microservice Metrics with Prometheus and Grafana

https://medium.com/c-sharp-progarmming/net-core-microservice-metrics-with-prometheus-and-grafana-d228bea89283

.NET アプリケーションの CPU 使用率やリクエストなどのメトリクスを Prometheus と Grafana で可視化する方法についての記事。

.NET Core Microservice Logging with Grafana and Loki

https://medium.com/c-sharp-progarmming/net-core-microservice-logging-with-grafana-and-loki-92cd2783ed88

.NET アプリケーションのロギングを Loki と Grafana で取り扱う方法についての記事。

Nullable reference types in C# - Migrating to nullable reference types - Part 1

https://blog.maartenballiauw.be/post/2022/04/11/nullable-reference-types-in-csharp-migrating-to-nullable-reference-types-part-1.html

null 許容参照型についてとその移行について解説する記事シリーズ。

ASP.NET Core MVC 公式チュートリアルから実開発への橋渡し - Qiita

https://qiita.com/pepepe_90/items/795dadb8757ec0c5f948

ASP.NET Core MVC アプリケーションの公式チュートリアルで作った部分から実際のプロジェクト開発へと進んだ際に必要となるパーツを埋めることを目的とした記事。

記事では認証の追加、フィルター処理、appsettings.json のカスタマイズといった部分を解説している。

Introducing a New Way to Search Your Code and Visual Studio Features

https://devblogs.microsoft.com/visualstudio/introducing-a-new-way-to-search-your-code-and-visual-studio-features/

Visual Studio 2022 17.2 Preview 3 で導入された All-In-One 検索体験についての記事。既存の VS Search (Ctrl+Q) Go To (Ctrl+T) を合わせて一つの検索ウィンドウで検索できるようになる (ReSharper の Search Everywhere と似ている)。

記事では検索時にファイルや型、メンバーでフィルターできるといった点について触れている。

C#でzipを展開するときに気をつけること

https://zenn.dev/throw_exception/articles/7202956e9824d5

.NET Framework 4.5 から導入された Zip ファイルを操作可能となった API を使用してファイルを展開する際に注意すべき点についての記事。

記事では ExtractToFile メソッドではディレクトリトラバーサルが発生してセキュリティー上の問題となることがある点とその対策について解説している。

.NET用 MVVMライブラリ CommunityToolkit.Mvvm ver8 (preview3) - Qiita

https://qiita.com/hqf00342/items/d12bb669d1ac6fed6ab6

.NET Community Toolkit 8.0.0 Preview 3 の新しい MVVM サポートを利用する方法についての記事。

.NET Framework April 2022 Cumulative Update Preview

https://devblogs.microsoft.com/dotnet/framework-april-2022-updates/

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

3rd パーティーのアプリケーションがディレクトリーサービスを呼び出した場合にアクセス違反となる不具合が修正されている。

https://weblog.west-wind.com/posts/2022/Mar/29/Combining-Bearer-Token-and-Cookie-Auth-in-ASPNET

ASP.NET Core アプリケーションでの認証に Bearer トークン方式と Cookie を使用する方式の両対応を行う方法についての記事。

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

ツイート

Dockerfile でヒアドキュメントをサポートしたのでそのままソースコードを書けば、Dockerfile 完結の .NET アプリコンテナーイメージを作れるというネタ。

BenchmarkDotNet でベンチマークを各コアで並列に動かすというプロトタイプを作ったという話。

Rider では Docker コンテナーの中をブラウジングするといった便利機能があるという Tips。(Files タブはDocker | JetBrains Rider には書かれていないので比較的最近実装されたのかもしれない)

Deep Dive

Vectorized MemoryExtensions.CommonPrefixLength by gfoidl · Pull Request #68210 · dotnet/runtime

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

Span 同士で同じプレフィックスの長さを取る MemoryExtensions.CommonPrefixLength メソッド (.NET 7) をベクトル化して高速化するという PR。

Implement minimal RateLimitingMiddleware by wtgodbe · Pull Request #41008 · dotnet/aspnetcore

https://github.com/dotnet/aspnetcore/pull/41008

RateLimiting API を使用した ASP.NET Core 向けのミニマルな RateLimiting ミドルウェアの実装 PR。