2023-09-24: Docker Desktop 4.23, System.Text.Json in .NET 8

Published on Sunday, 24 September 2023

トピックス

Docker Desktop 4.23: Updates to Docker Init, New Configuration Integrity Check, Quick Search Improvements, Performance Enhancements, and More | Docker

https://www.docker.com/blog/docker-desktop-4-23/

Docker Desktop 4.23 がリリースされた。

このリリースでは docker init での ASP.NET Core の対応が追加され、プロジェクトに Dockerfile などのコンテナー化に必要なファイルの作成が簡単に行えるようになった。

What's new in System.Text.Json in .NET 8 - .NET Blog

https://devblogs.microsoft.com/dotnet/system-text-json-in-dotnet-8/

.NET 8 での System.Text.Json の新機能について。

  • Source Generator の改善
    • required および init メンバーのサポート
    • Source Generator の組み合わせ
    • 発音できない型名のサポート
    • JsonStringEnumConverter<TEnum>
    • JsonSourceGenerationOptionsAttribute 機能の拡張
    • デフォルトでのリフレクションの無効化
    • サイズ削減
    • バグ修正
  • 読み取り専用メンバーの収集
  • 存在しないメンバーのハンドリング
  • スネークケースとケバブケースの名前付けポリシー
  • インターフェース階層サポート
  • Half, Int128, UInt128 のビルトインサポート
  • Memory<T>, ReadOnlyMemory<T> のビルトインサポート
  • JsonSerializerOptions 単一利用アナライザー
  • 非パブリックメンバーに対する JsonIncludeAttribute および JsonConstructorAttribute サポートの拡張
  • IJsonTypeInfoResolver.WithAddedModifier
  • JsonSerializerOptions.MakeReadOnly()
  • JsonNode の追加機能
  • JsonNode.ParseAsync APIs
  • System.Net.Http.Json の改善
    • IAsyncEnumerable 拡張
    • JsonTypeInfo を受け付ける JsonContent.Create のオーバーロード
  • JsonConverter.Type プロパティー
  • パフォーマンス改善

HTTPS Everywhere Update - The NuGet Blog

https://devblogs.microsoft.com/nuget/https-everywhere-update/

NuGet での HTTPS の強制化に関するアップデート。

NuGet 6.8 ではソースの指定に allowInsecureConnections 属性で true を指定することで非 HTTP による接続を許可できるようになる。

New React TypeScript SPA Templates and More - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/new-react-typescript-spa-templates-and-more/

Visual Studio 2022 Preview で TypeScript を使用した React の SPA アプリケーションのテンプレートが更新された。

新しいテンプレートでは Vite を使用することで作成と実行が高速になるほか様々なメリットを受けられるとしている。

Release Windows App SDK 1.4.1 (1.4.230913002) · microsoft/WindowsAppSDK

https://github.com/microsoft/WindowsAppSDK/releases/tag/v1.4.1

Windows App SDK 1.4.1 がリリースされた。

このリリースではいくつかの不具合が修正されている。

Azure Service Fabric 10.0 Release | Azure updates | Microsoft Azure

https://azure.microsoft.com/en-us/updates/azure-service-fabric-100-release/

Azure Service Fabric 10.0 がリリースされた。

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

Tune into the C# Certification Training Series - .NET Blog

https://devblogs.microsoft.com/dotnet/csharp-certification-training-series/

freeCodeCamp での C# 認定トレーニングが開始されたことに記念したライブストリーミングセッションの紹介。

.NET 8 + ASP.NET Core + EFCoreでどれだけ起動が早くなったか確認する - Qiita

https://qiita.com/karuakun/items/def89f1a1fe4e07b2cfd

.NET 8 と ASP.NET Core、Entity Framework Core を組み合わせた場合の起動パフォーマンスの調査について。

記事では Dapper や素の ADO.NET、 NativeAOT でのビルド時での結果なども併せて載せている。

Godot is not the new Unity - The anatomy of a Godot API call

https://sampruden.github.io/posts/godot-is-not-the-new-unity/

Godot のおけるレイキャストに関する部分を例に C# からの API 呼び出しの非効率であるという意見。

Eager, Lazy and Explicit Loading with Entity Framework Core | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2023/09/21/eager-lazy-and-explicit-loading-with-entity-framework-core/

Entity Framework Core の Eager、遅延、明示的なロードに関する解説。

AddTransientで追加したクラスのDisposeはいつ呼ばれるか - Qiita

https://qiita.com/karuakun/items/4f300d84e366a125c60d

Microsoft.Extensions.DependencyInjection のコンテナーに AddTransient で追加した型の Dispose が呼び出されるタイミングについて。

Raytracing in Vulkan using C# — Part 1

https://jenskrumsieck.medium.com/raytracing-in-vulkan-using-c-part-1-997cb284f7e8

C# で Vulkan を使用してレイトレーシングを実装するというシリーズ。

.NET8用のDevContainerを作ってみる - Qiita

https://qiita.com/karuakun/items/4695cfbdfbf623600c98

.NET 8 向けの Dev Containers を作成する方法について。

【C#/Windows】DateTimeのToStringで西暦/和暦(Windows設定)の罠にはまりかけた話 - Qiita

https://qiita.com/nobushi95/items/c4d5877fadef29c16d74

DateTime のカスタム書式指定の年 (yyyy) が Windows の書式設定に依存していることについて。

Simplifying F# computations with the new 'while!' keyword - .NET Blog

https://devblogs.microsoft.com/dotnet/simplifying-fsharp-computations-with-the-new-while-keyword/

新しい while! キーワードによる F# のコンピュテーション式のシンプル化について。

IntelliTest simplifies writing and maintaining unit tests - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/intellitest-simplifies-writing-and-maintaining-unit-tests/

Visual Studio Enterprise Edition で使用できる新しい IntelliTest (テストケース生成) について。

新しい IntelliTest はプレビューとして .NET 6 (x64) での実行をサポートした。

Observing .NET microservices with OpenTelemetry - logs, traces and metrics

https://blog.codingmilitia.com/2023/09/05/observing-dotnet-microservices-with-opentelemetry-logs-traces-metrics/

OpenTelemetry と Grafana を使用したログとトレース、メトリクスの収集と計測について。記事ではカスタムトレースやメトリックの使用方法などにも触れている。

[雑記] InlineArray | ++C++; // 未確認飛行 C ブログ

https://ufcpp.net/study/csharp/datatype/inline-array/

C# 12 の新しい機能である InlineArray についての解説。

Should you use the .NET 8 Identity API endpoints?

https://andrewlock.net/should-you-use-the-dotnet-8-identity-api-endpoints/

.NET 8 の Identity API エンドポイントがどういうもので使用すべきかどうかについて。

著者は .NET 8 リリース時点のものではいくつか問題があるためあまり推奨できないとしている。

【C#】TaskCompletionSource を使う時に意識すべき事。 - ねののお庭。

https://blog.neno.dev/entry/2023/09/17/191002

TaskCompletionSource の継続処理がどのスレッドで実行されるのか注意すべき点と推奨設定について。

how to use YARP as an ingress controller in Kubernetes in Docker Desktop (KinD) on Windows 11

https://blog.baslijten.com/how-to-deploy-yarp-ingress-controller-on-kubernetes-in-docker-desktop-kind/

Yarp を Docker Desktop の Kubernetes の Ingress として使用する方法について。

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

Cysharp/PrivateProxy: Source Generator and .NET 8 UnsafeAccessor based high-performance strongly-typed private accessor for unit testing and runtime.

https://github.com/Cysharp/PrivateProxy

.NET 8 の UnsafeAccessor を使用して非公開なメンバーにアクセスするためのプロキシーを生成する Source Generator。

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

ツイート

.NET MAUI での Blazor Hybrid を Linux で動かそうとしているという話。

Enumerator は Dispose しないとリソースを開放しない状態になることがあるという注意。

C# 12 のコレクションリテラルを使うと特定の長さの Span をスタックに確保できるというテクニック。