2022-06-03: Visual Studio at Microsoft Build 2022, Incremental ASP.NET to ASP.NET Core Migration

Published on Friday, 03 June 2022

トピックス

Visual Studio at Microsoft Build 2022 - .NET Blog

https://devblogs.microsoft.com/visualstudio/visual-studio-at-microsoft-build-2022/

Microsoft Build 2022 での Visual Studio 関連の情報についての記事。

  • Visual Studio 2022 17.3 Preview 1.1 と Visual Studio 2022 for Mac 17.3 Preview 1 で .NET MAUI のツーリングが利用可能に
  • Microsoft Dev Box (Windows 365 の開発者向け版) のアナウンス
  • Azure Deployment Environments のアナウンス
  • ARM64 向け Visual Studio のアナウンス

Incremental ASP.NET to ASP.NET Core Migration - .NET Blog

https://devblogs.microsoft.com/dotnet/incremental-asp-net-to-asp-net-core-migration/

ASP.NET を ASP.NET Core に段階的に移行する方法とそれを支援するツールやライブラリーについての記事。

記事では大きなプロジェクトを段階的に移行する方法として System.Web アダプターライブラリーと YARP を使用した構成を構築し、一部のロジックを ASP.NET Core アプリケーションへと移行しトラフィックを流していく形でインクリメンタルに移行する手段を紹介している。

またその構成を Visual Studio 上で簡単に構築できるマイグレーション用の拡張 (要 Visual Studio Preview) についても使用方法を含めて紹介している。

.NET Framework May 2022 Cumulative Update - .NET Blog

https://devblogs.microsoft.com/dotnet/net-framework-may-2022-cumulative-update/

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

このアップデートでは WPF、WinForms、.NET ランタイム、ワークフローに関する品質と安定性の向上が含まれている。

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

C#でCustom GitHub Actionを書く | Yucchiy's Note

https://blog.yucchiy.com/2022/05/implement-custom-github-action-with-csharp/

GitHub Actions のカスタム action を C# で記述する方法についての記事。

【vscode/Unity】補完が消えた&useGlobalMonoがなくなって混乱している人へ

https://zenn.dev/leaf/articles/98f02a61440893

Visual Studio Code で使用する C# 拡張を使用している場合に Unity のプロジェクトのようなフルフレームワークプロジェクトで補完が効かなくなる問題についての記事。

原因は C# 拡張の OmniSharp が .NET 6 で動作するようになったことで不完全な付属のミニマルな Mono と MSBuild Tools を削除となり、その結果として設定項目が変更されたことによる。(デフォルトでは .NET SDK を探しにいく)

解決策は omnisharp.useModernNet を false にすることでインストールされた Mono を利用するようにする。

https://dev.to/syncfusion/page-navigation-in-net-maui-an-overview-2bkm

.NET MAUI で利用できる2種類のページナビゲーションの簡単な説明記事。

[C#] CsWin32でWin32APIのプラットフォーム呼び出し(P/Invoke)コードを自動生成 - Qiita

https://qiita.com/radian-jp/items/a4509f9a44101fb2f30e

Windows (Win32 API) 向けの P/Invoke の呼び出しコードを生成する Source Generator の CsWin32 の使い方についての記事。

Securing .NET App Secrets with AWS Secrets Manager

https://dev.to/aws-builders/securing-net-app-secrets-with-aws-secrets-manager-2f4h

.NET アプリケーションから AWS Secrets Manager にアクセスしてシークレットを取得する方法についての記事。

Improved doc management personalization

https://devblogs.microsoft.com/visualstudio/doc-management-personalization/

Visual Studio 2022 で強化されたドキュメント(タブ)管理について紹介する記事。

  • タブの複数行配置
  • 非表示ドキュメント名の斜体表示
  • 変更済みインジケーターのアクセシビリティの向上
  • 閉じたタブの復元

Next.js meets ASP .NET Core — a story of performance and love at long tail

https://medium.com/@david.nissimoff/next-js-meets-asp-net-core-a-story-of-performance-and-love-at-long-tail-41cf9231b2de

ASP.NET Core サーバーで Next.js の静的生成 (SSG) ページをホストするという試みについての記事。

Surprising Ways To Profile Your .NET Applications | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2022/05/31/surprising-ways-to-profile-your-net-applications/

dotTrace, dotMemory を使用してのプロファイリングは IDE やビルドパイプライン、ユニットテストやリモート環境といった様々な環境で行えることを紹介する記事。

Understanding PathBase in ASP.NET Core

https://andrewlock.net/understanding-pathbase-in-aspnetcore/

ASP.NET Core の HttpContext にある PathBase プロパティーがどういうものかを説明している記事。

PathBase はリクエストのプレフィックスとなるパスを表すもので、リバースプロキシーの裏側にいる場合などに役立つ。

Unusual optimizations; ref foreach and ref returns

https://blog.marcgravell.com/2022/05/unusual-optimizations-ref-foreach-and.html

foreach で ref を使い、構造体のコピーを減らすことでパフォーマンスを向上させるテクニックについての記事。

foreach は対象が構造体の列挙の場合、値を取り出すことがコピーとなるためパフォーマンスに影響が出る可能性がある。

例として配列の要素に対するメソッド呼び出しには foreach を使った場合は「配列からインデックスで値を取り出す」「ローカル変数に保存する」「ローカル変数のアドレスを取得する」の3ステップが必要となる一方、 for の場合は「インデックスで値のアドレスを取り出す」だけでコピーが発生しない IL へとコンパイルされる。(ちなみに SharpLab で JIT 結果を見ると同じ結果になっているように見えるので単純なコードの場合差がない可能性がある)

配列以外で似たようなことをするにはどうすればよいのかというところで Span<T>foreach (ref ...) を使用する方法があるとしている。リストであれば foreach (ref var tmp in CollectionsMarshal.AsSpan(list)) { ... } のようにすることでコンパイラーと JIT での最適化で配列での for と同じようなコピーしない操作結果を得られる。

もし Span<T> を使用できないとしても Span<T> などと同様に Enumerator.Current で ref return するカスタム Enumerator を実装することもできる。

May 26, 2022 - .NET Data Biweekly Updates (2022) · Issue #27185 · dotnet/efcore

https://github.com/dotnet/efcore/issues/27185

Entity Framework Core 関連の隔週のアップデート情報。5月26日分。

コミュニティスタンドアップの紹介や EF Core 7 の実装状況などについて触れている。

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

シェルスクリプトマガジンvol.78 Web掲載記事まとめ | shell-mag

https://shell-mag.com/vol-78-web/

.NET 特集が組まれている。

ツイート

Microsoft の公式コンテナーレジストリーのカタログページがあるので、.NET のイメージも探せるという話。