トピックス
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
APIsSystem.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 呼び出しの非効率であるという意見。
During the past few days, some controversy arised regarding to the supposed low efficiency of C# bindings in Godot.
— Juan Linietsky (@reduzio) September 21, 2023
As I believe this to be largely a misunderstanding, I wrote an in depth article explaining how the Godot binding system works:https://t.co/WOEf7XmbBK
Have fun!
Eager, Lazy and Explicit Loading with Entity Framework Core | The .NET Tools Blog
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
Visual Studio Enterprise Edition で使用できる新しい IntelliTest (テストケース生成) について。
新しい IntelliTest はプレビューとして .NET 6 (x64) での実行をサポートした。
Observing .NET microservices with OpenTelemetry - logs, traces and 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
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 で動かそうとしているという話。
Progress in the Blazor Hybrid support on Linux with .NET MAUI. https://t.co/f418cBkrKo Thanks @lytico #dotnet #dotnetmaui pic.twitter.com/qblZnwS49F
— Javier Suárez (@jsuarezruiz) September 19, 2023
Enumerator は Dispose しないとリソースを開放しない状態になることがあるという注意。
Do you know that it's very important to dispose an enumerator even though you might think it can't own any "managed resources"?
— Sergiy Teplyakov 🇺🇦 🇺🇸 (@STeplyakov) September 18, 2023
Here is an example: TLDR; `Enumerator.Dispose` calls the finally block of an iterator block. And that can be very important to do! pic.twitter.com/T755LD4VRa
C# 12 のコレクションリテラルを使うと特定の長さの Span をスタックに確保できるというテクニック。
My latest C# 12 hack. Using collection literals to create a stack allocated Span when under a certain length. #dotnet #csharp pic.twitter.com/tFmRxgs5Hx
— David Fowler (@davidfowl) September 17, 2023