トピックス
.NET 6 is now in Ubuntu 22.04
https://devblogs.microsoft.com/dotnet/dotnet-6-is-now-in-ubuntu-2204/
.NET 6 が Ubuntu 22.04 (Jammy) の公式配布に含まれるようになったアナウンス。
Canonical とのパートナーシップにより .NET 6 が Ubuntu の一部として配布されるようになった。これにより apt パッケージマネージャーからパッケージソースの追加なしに apt install dotnet6
でインストールできるようになる。
また同時に .NET 6 の Chiseled Ubuntu コンテナーイメージも公開された。Chiseled Ubuntu コンテナーイメージは通常のコンテナーイメージと異なり、パッケージマネージャーやシェル、root といったものが削除された極小サイズのイメージとなっている。必要最低限のコンポーネントを含むイメージとなっているため、アタックサーフェスを小さくできる。なお、Chiseled イメージには ICU が含まれていないため、Globalization Invariant モードが有効となっている点に注意が必要。
記事では apt パッケージマネージャーからのインストールについてとコンテナーイメージの利用方法や注意点について触れている。
Turning it up to 11! - Avalonia UI
https://dev.to/avalonia/turning-it-up-to-11-34jn
Avalonia 11.0 Preview 1 がリリースされた。
記事ではこのリリースで含まれる新機能や改善点について紹介している。
- プラットフォームサポートの拡大
- iOS, Android, ブラウザー
- 新しいビジュアルレイヤー (コンポジションレンダラー)
- 効率の良いレンダラーで 240fps の達成
- フル機能のテキストレンダリングとレイアウト
- RTL を含む Unicode サポート
- リッチテキストとインラインサポート、TextFormatter API サポート
- すべてのプラットフォームでの IME のサポート
- アクセシビリティー (Windows と macOS)
- 自動テスト
- コントロールのテーマの改善
- パフォーマンスの向上
- リソースのオンデマンドローディング
- XAML コンパイラーによる出力される MSIL の削減
- スタイリングシステムとレンダラーの最適化
Avalonia 11.0 Preview 1 は NuGet から利用可能となっている。
A Heavy Lift: Bringing Kestrel + YARP to Azure App Services
https://azure.github.io/AppService/2022/08/16/A-Heavy-Lift.html
Azure App Services のフロントエンドとなるリバースプロキシーを HTTP.sys + ARR から Kestrel + YARP へと移行していることについての記事。
記事では App Services の構成、YARP への移行の理由、移行までの期間、移行中に遭遇したバグといったものを紹介している。
移行後には FrontEndRole のパフォーマンスがスループットにして80%向上したこと、Linux の App Service も Nginx から同様の Kestrel + YARP に移行することで同じコードベースで gRPC をはじめとして様々な機能を提供できるようになるとのこと。
We spent the last 6 months moving Azure App Service from IIS and nginx to YARP + Kestrel to bring you gRPC and also take advantage of the massive performance improvements in .NET 6 🔥🔥🔥🔥https://t.co/r7YggokNwV#dotnet #aspnetcore #azure
— David Fowler 🇧🇧🇺🇸 (@davidfowl) August 17, 2022
Release Version 7.0.0 · graphql-dotnet/graphql-dotnet
https://github.com/graphql-dotnet/graphql-dotnet/releases/tag/7.0.0
GraphQL for .NET 7.0.0 がリリースされた。
このバージョンではデーターローダーの結果のメモリー使用量の削減、検証ルールの非同期サポート、API の改善、CLR 型からのインターフェースグラフといった対応が含まれている。
.NET Conf Focus on MAUI - That's a wrap!
https://devblogs.microsoft.com/dotnet/dotnet-conf-focus-on-maui-recap/
.NET Conf Focus on MAUI のスライドやリンクをまとめた記事。
What's New in Visual Studio 2022 17.4 Preview 1 - Visual Studio Blog
https://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-4-preview-1/
Visual Studio 2022 17.4 Preview 1 の新機能について紹介している記事。
- エンタープライズサポート: LTSC
- Arm64 サポート
- UWP ワークロードのサポート
- Visual Studio 管理テンプレート (ADMX/ADML) による Visual Studio の管理
- サポート対象外のコンポーネントの削除機能
- Git ツール
- コード検索
- 選択マッチハイライト
- 生産性
- C#: ドキュメントアウトラインでファイルのシンボルツリーの確認
- C++: “Navigation after Create Declaration/Definition” のオプション
- C++: ARM64 の CMake と Ninja のサポート
- C++: 接続マネージャーからの SSH プロキシージャンプ
- C++: C++ 23 対応
- F#: ローカル関数の引数のツールチップ
Live Share: Enterprise Policies are here! - Visual Studio Blog
https://devblogs.microsoft.com/visualstudio/ls-policies/
最新の Visual Studio Live Share と管理テンプレートで Live Share のポリシーを構成できるようになった。
これにより組織外のユーザーとセッションの共有を拒否することや匿名ゲストの無効化といった構成が可能となった。
アーティクル、スライドなど
Directory.EnumerateFiles メソッドの予期しない挙動について - 鷲ノ巣
https://tech.blog.aerie.jp/entry/2022/08/13/083935
Directory.EnumerateFiles
メソッドのワイルドカードの取り扱いが .NET Framework では予期せぬ結果となる可能性がある挙動であることについての記事。
記事では *
ワイルドカードに加えて ?
ワイルドカードの挙動についても触れている。
"React での ASP.NET Core" テンプレートで生成されるプロジェクトの仕組みを調べてみた | @jsakamoto
https://devadjust.exblog.jp/29304896/
ASP.NET Core の React を使用するテンプレートで作成したプロジェクトを実行する際に、どのようにして JavaScript を処理することでシームレスな起動が行われるようになっているのかについての記事。
Managing the most dangerous constructor ever - Ayende @ Rahien
https://ayende.com/blog/198081-A/managing-the-most-dangerous-constructor-ever
X509Certificate2
のコンストラクターを使用すると裏でファイルを作成しているため正しく処理しないとファイルが残ってしまって危険、しかし即開放すると非同期のようなケースで壊れてしまうのでそうはいかないという記事。
Tracking down RavenDB I/O usage in Linux - Ayende @ Rahien
https://ayende.com/blog/197985-A/tracking-down-ravendb-i-o-usage-in-linux
Linux 上で RavenDB の I/O 使用の詳細を探った方法についての記事。
Building a custom Configuration Provider in .NET 6
Microsoft.Extensions.Configuration の Configuration Provider を実装する方法についての記事。
.NET CoreのプロジェクトをGitLab CI/CDでECSに自動デプロイさせる - Qiita
https://qiita.com/waka0238/items/a5d5f1167efca178f775
.NET アプリケーションを GitLab CI/CD を使用して Amazon ECS にデプロイする方法についての記事。
The Code Blogger - .NET 7 – Important Breaking Changes for Web Developers
https://thecodeblogger.com/2022/08/13/net-7-important-breaking-changes-for-web-developers/
.NET 7 で行われる破壊的変更について紹介している記事。
記事では API コントローラーのパラメーターへ推測による DI、Microsoft.Data.SqlClient のアップデート、SignalR の Hub のパラメーターの DI による解決といった点を紹介している。
C# file nesting in VSCODE
https://dev.to/wahidd/c-file-nesting-in-vscode-1em4
Visual Studio Code のファイルネスト機能で .cs ファイルをネストさせる設定についての記事。
New in Entity Framework 7: Bulk Operations with ExecuteDelete and ExecuteUpdate
Entity Framework 7 の ExecuteDelete
と ExecuteUpdate
による一括操作についての記事。
ソースジェネレータとInternalsVisbleToの組み合わせで発生するCS0436を緩和する
https://zenn.dev/benutomo/articles/b29f72366023b9
InternalsVisibleTo
を使用しているプロジェクトでソースジェネレーターが生成したマーカー用の属性が別なアセンブリーからもアクセスできるようになってしまい、それぞれのアセンブリーでマーカー属性クラスを持つことになり名前が競合しているという警告が出てしまう問題を解消する方法についての記事。
プロジェクト A
と B
があり、それぞれがソースジェネレーターを参照したことでそれぞれに internal class Marker : Attribute {...}
という属性クラスのコードが生成された場合に、A
が InternalsVisibleTo
で B
に対して internal を公開すると B
からは A
の Marker
と B
の Marker
の両方が見えて競合してしまうという問題。
Git Line-staging Released! - Visual Studio Blog
https://devblogs.microsoft.com/visualstudio/git-line-staging-released/
Visual Studio 2022 で Git の行ステージングがサポートされたことについての紹介記事。
How I am using IActionConstraintFactory to handle content negotiation
IActionConstraint
を使用して、リクエストのヘッダーなどを条件に実行するアクションを切り替える(コンテントネゴシエーション)方法についての記事。
Securing Amazon API Gateway with Lambda Authorizer in .NET - Detailed Guide
https://codewithmukesh.com/blog/aws-lambda-authorizer-in-dotnet/
.NET で Lambda オーソライザーを実装して Amazon API Gateway を保護する方法についての記事。
xUnitでExceptionをテストする - Qiita
https://qiita.com/mkuwan/items/bc301ffef32044c148e8
xUnit で例外がスローされることをテストする方法についての記事。
【C#】record 型のプロパティへのドキュメント コメントの書き方
https://zenn.dev/naminodarie/articles/933cc96767e1d1
record 型のプロパティーのドキュメントコメントについての記事。
ライブラリ、リポジトリ、ツールなど
spectresystems/snitch: A tool that help you find duplicate transitive package references.
https://github.com/spectresystems/snitch
プロジェクトの参照している NuGet パッケージを間接的に参照しているものも含めて走査して、重複を確認できるツール。
サイト、ドキュメントなど
独習C# 第5版 | 翔泳社
https://www.shoeisha.co.jp/book/detail/9784798175560
C# の入門書である「独習 C#」の C# 10 に対応した改訂版。
ツイート
ClangSharp v14.0.0-rc1 has been released: https://t.co/5UpU42uzGI
— Tanner Gooding (@tannergooding) August 14, 2022
This package is the first to be signed and the first RC since the large rewrite back in 2019.
1/
2019年以降大幅に書き換えが行われた ClangSharp v14.0.0-rc1 が公開されたという話。P/Invoke Generator というツールも更新され、C ヘッダーファイルから C# へのバインディングを生成できる、など。
Deep Dive
Major compiler slowdown due to changes in .NET GC between .NET 7 preview2 and .NET 7 preview3 · Issue #13730 · dotnet/fsharp
https://github.com/dotnet/fsharp/issues/13730
.NET 7 Preview 7 で F# コンパイラーがとても遅くなったという Issue。
.NET 7 Preview 7 では GC Region が有効になっているなど GC に大きく手が入っているためではないか、Workstation GC から Server GC にすることで改善する、といった話が出ている。
Remove ThreadPool native implementation by eduardo-vp · Pull Request #71719 · dotnet/runtime
https://github.com/dotnet/runtime/pull/71719
.NET 7 ではネイティブのスレッドプール実装が削除されるという PR。(.NET 6 からデフォルトでマネージコードによるスレッドプール)