2022-06-24: Incremental ASP.NET Migration Tooling Preview 2, gRPC Remove C# implementation, GitHub Copilot

Published on Friday, 24 June 2022

トピックス

Incremental ASP.NET Migration Tooling Preview 2 - .NET Blog

https://devblogs.microsoft.com/dotnet/incremental-asp-net-migration-tooling-preview-2/

段階的 ASP.NET 移行ツール Preview 2 についての記事。

ASP.NET 移行ツール Preview 2 のリリースではコードの改善や ASP.NET/ASP.NET Core アプリケーション間の認証共有といったものが含まれる。記事では ASP.NET との認証の共有についてと実際の利用手順について触れている。

Release Release v1.47.0 · grpc/grpc

https://github.com/grpc/grpc/releases/tag/v1.47.0

gRPC 1.47.0 がリリースされた(.NET 実装は含まれない)。

gRPC 1.47.0 では C# 実装が削除され C-core のパッケージは 2.46.x としてメンテナンスになり、現行の実装は grpc-dotnet へと移行する。なおツールに関しては引き続きリポジトリーに残る。

GitHub Copilot is generally available to all developers | The GitHub Blog

https://github.blog/2022-06-21-github-copilot-is-generally-available-to-all-developers/

AI ベースのコーディング支援ツールである GitHub Copilot が個人向けに一般公開された。

月額 $10 または年額 $100 で利用可能で60日間のトライアルが可能。学生や人気のあるオープンソースプロジェクトのメンテナーは無料で利用できる。

IDE は Visual Studio Code や Visual Studio, Rider などで利用できる。

Listen Up, Visual Studio has a new feature you need to hear about! - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/audio-cues-in-visual-studio-2022-17-3-preview-2/

Visual Studio 2022 17.3 Preview 2 で導入されたオーディオキュー機能についての記事。

オーディオキューはキャレットがエラーやブレークポイントのような特定行に移動したときに音を鳴らす機能。Visual Studio Code ですでに導入されている。

Improving .NET host error messages and supportability - .NET Blog

https://devblogs.microsoft.com/dotnet/dotnet-apphost-improvements/

.NET のホストやフレームワークがインストールされていない場合のエラーメッセージを .NET 7 Preview 6 で改善したことについての記事。

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

Dotnet CoreプロジェクトでプライベートNuGetフィードを使ってセキュアなDockerイメージを作る - Qiita

https://qiita.com/superriver/items/3a5e14bc1880b00d7415

.NET プロジェクトの Docker イメージをビルド時にプライベートの NuGet フィードを利用する必要がある場合の対応についての記事。

A Gentle Introduction to C# 11 List Patterns

https://medium.com/@gsferreira/a-gentle-introduction-to-c-11-list-patterns-ed7807c5484c

C# 11 に入る予定のリストパターン記法についての記事。

Centralized appsettings for .NET apps using Spring Cloud Config

https://ed555009.medium.com/centralized-appsettings-for-net-apps-using-spring-cloud-config-d5835109b535

Spring Cloud Config サーバーで .NET のアプリケーション構成 (appsettings) を保持し、利用する方法についての記事。

PostgreSQL 14 Breaks the .NET and Java Drivers for PostgreSQL

https://www.infoq.com/news/2022/06/PostgreSQL-14-Breaking-Change/

PostgreSQL 14 では SQL 関数を作成する際に BEGIN ATOMIC ... END を使用する場合に .NET のドライバーと互換性がない問題についての記事。

Npgsql では Raw SQL モードが追加されているため、それを利用することで回避できる。

High performance .NET: Building a Redis Clone–naively - Ayende @ Rahien

https://ayende.com/blog/197412-B/high-performance-net-building-a-redis-clone-naively

.NET で Redis クローンを実装してハイパフォーマンスなコードを書いていくシリーズ。

NuGet Support in Visual Studio for Mac 17.0 - Matt Ward

https://lastexitcode.com/blog/2022/06/19/NuGetSupportInVisualStudio17-0/

Visual Studio 2022 for Mac 17.0 での NuGet サポートの変更点についての記事。

NuGet のバージョン変更や、設定ファイルの場所の変更、パスワードのキーチェーンへの格納など。

The Perils of Combining Multicast Delegates with Tasks in C# | endjin

https://endjin.com/blog/2022/06/the-perils-of-combining-multicast-delegates-with-tasks-in-csharp.html

マルチキャストデリゲートと Task の組み合わせについての記事。 マルチキャストデリゲートは最後のデリゲートの値を返すため、Task と組み合わせて使うと予期せぬ結果となる。

.NET6 ASP.NET Coreで1つのプロジェクトで、ASP.NET WebAPI+Vue3 Viteの環境を作ってみる - Qiita

https://qiita.com/reimei2020/items/4e14e5c9ead4bbaa20d7

.NET 6 の ASP.NET Core プロジェクトで Vue と Vite を組み合わせた構成を構築する手順についての記事。

Multi-tenant Apps With EF Core and ASP.NET Core | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2022/06/22/multi-tenant-apps-with-ef-core-and-asp-net-core/

Entity Framework Core と ASP.NET Core を使用してマルチテナントアプリケーションを実装する方法についての記事。

記事では一つのデータベースを共有する方法とテナントごとにデータベースを持つ方法での接続について触れている。

Feature Flags in .NET, from simple to more advanced

https://dev.to/timdeschryver/feature-flags-in-net-from-simple-to-more-advanced-18og

ASP.NET Core アプリケーションにフィーチャーフラグを実装する方法についての記事。

記事では Microsoft.FeatureManagement.AspNetCore を使用してカスタマイズする方法などに触れている。

Consuming anonymous types with DiagnosticListener in .NET 6

https://andrewlock.net/consuming-anonymous-types-with-diagnosticlistener-in-dotnet6/

.NET 6 で DiagnosticListener を利用時に匿名型のデータが渡ってきた場合の処理についての記事。

Microsoft.Extensions.DiagnosticAdapter が利用できるが、更新されないステータスになっていることなどに触れている。

ReSharper & Rider 2022.2 EAP6 has just been released!

https://www.jetbrains.com/resharper/nextversion/ https://www.jetbrains.com/rider/nextversion/

ReSharper と Rider の 2022.2 EAP6 がリリースされた。

ReSharper では IL Viewer における高レベル/低レベル C# でコンパイル表示に対応し、Rider では Angular 14 のサポートとデータベースに関する機能が追加された。

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

ralfbiedert/interoptopus: The polyglot bindings generator for your library (C#, C, Python, …) 🐙

https://github.com/ralfbiedert/interoptopus

Rust の多言語向けバインディングを実装/生成するライブラリー。C# への対応がある。

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

ツイート

WinDbg Preview でマネージコードのデバッグでスタックフレームとローカル変数を確認できるようになったという話。

AWS Toolkit for Visual Studio 2022 の AWS への発行 UX がリフレッシュされたものがリリースされたという話。

.NET 7 以前は TryParse/Parse をジェネリックに書くことができなかったけど、static abstract members in interface と IParsableT によってできるようなったという話。

Deep Dive

Add IL Emit support for MethodInfo.Invoke() and friends by steveharter · Pull Request #67917 · dotnet/runtime

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

MethodInfo.Invoke() のような動的メソッド呼び出しのコードで IL を出力するようにしてパフォーマンスを向上するという PR

tier0/R2R - instrumented tier0 - optimized tier1 by EgorBo · Pull Request #70941 · dotnet/runtime

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

Ready2Run → 階層化 JIT (Tier 0) → 階層化JIT (Tier 1; PGO による最適化) という流れで起動時からのパフォーマンスを上げていく PR。

R2R を使用しないフル Dynamic PGO は最終的には最速のパフォーマンスが出るが初回リクエスト応答の時間がとても遅くなってしまうため、ハイブリッドなアプローチで R2R の初回応答性とフル Dynamic PGO のパフォーマンスの両方を得られるようにする。