トピックス
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
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 クローンを実装してハイパフォーマンスなコードを書いていくシリーズ。
- High performance .NET: Building a Redis Clone– the wrong optimization path - Ayende @ Rahien
- High performance .NET: Building a Redis Clone–separation of computation & I/O - Ayende @ Rahien
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
マルチキャストデリゲートと 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 のサポートとデータベースに関する機能が追加された。
ReSharper 2022.2 EAP6 has just been released! This update contains an option to view decompiled high-level / low-level C# code in the IL Viewer.
— JetBrains ReSharper (@resharper) June 23, 2022
Follow this link to learn more and download it:https://t.co/NoWHM5dBvi pic.twitter.com/xJhY7cucLr
Rider 2022.2 EAP6 has just landed with support for Angular standalone components and 2 new models for resolving database objects.
— JetBrains Rider (@JetBrainsRider) June 23, 2022
Follow this link to learn more and download it:https://t.co/HMvf9osthz pic.twitter.com/1tKQZZ14k0
ライブラリ、リポジトリ、ツールなど
ralfbiedert/interoptopus: The polyglot bindings generator for your library (C#, C, Python, …) 🐙
https://github.com/ralfbiedert/interoptopus
Rust の多言語向けバインディングを実装/生成するライブラリー。C# への対応がある。
サイト、ドキュメントなど
ツイート
One of the most exciting parts of this new release is support for managed code debugging. This includes support for managed stack frames and local variables! https://t.co/3y6128jSQ0 pic.twitter.com/w0wQxkQ2hl
— Tim Misiak (@timmisiak) June 22, 2022
WinDbg Preview でマネージコードのデバッグでスタックフレームとローカル変数を確認できるようになったという話。
The latest #AWS Toolkit for Visual Studio 2022 has an updated Publish to AWS feature with a UX refresh. Get the AWS Toolkit for VS2022 at the link below, or update your existing version in VS using Extensions > Manage Extensions > Updates.https://t.co/I4MJJphkDL#dotnet
— .NET on AWS (@dotnetonAWS) June 22, 2022
AWS Toolkit for Visual Studio 2022 の AWS への発行 UX がリフレッシュされたものがリリースされたという話。
Playing around with using static interface methods and the new IParsable<T> to make generic callsites for HTTP APIs. Before .NET 7 there was no way to write generic code that did {Type}.TryParse/{Type}.Parse. The type system didn't have a way to describe these contracts. #dotnet pic.twitter.com/hhlBOYQmGf
— David Fowler 🇧🇧🇺🇸 (@davidfowl) June 22, 2022
.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
TIL: using MethodInto.Invoke() is fine again. Add IL Emit support for MethodInfo.Invoke() and friends by steveharter https://t.co/BCEV5Eo2fG
— Daniel Cazzulino 🇦🇷 (@kzu) June 20, 2022
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 のパフォーマンスの両方を得られるようにする。
A proposal to add a new tier in JIT - "instrumented tier0 after AOT" https://t.co/WvS3IkI2Ga - should allow us to still do PGO for AOT'd (R2R) code. pic.twitter.com/ttpIxNxz3R
— Egor Bogatov (@EgorBo) June 20, 2022