2026-05-20 comparisoncsharpasync C# における async void と async Task: それぞれが正しい場面 async Task がデフォルトで、async void は例外です。async void は、イベントハンドラー、メッセージループのトップレベルハンドラー、そして void シグネチャを要求する一部のフレームワークコールバックに限って使用してください。それ以外のすべてでは、例外処理、コンポーザビリティ、テスタビリティの観点から async Task が勝ります。
2026-05-20 comparisoncsharprecords C# における record vs class vs 構造体: 意思決定マトリックス C# 14 は 4 つのデータ型の形式 -- class、record class、struct、record struct -- を提供します。これがその意思決定マトリックスです: それぞれがいつ正しいか、それぞれが何を犠牲にするか、そして決定を強制するルール。
2026-05-19 csharp-14csharpdotnet-10 修正: Span と ReadOnlySpan による C# 14 のオーバーロード解決の破壊的変更 C# 14 / .NET 10 にアップグレードした後、array.Contains、x.Reverse()、MemoryMarshal.Cast などの呼び出しが突然異なるオーバーロードにバインドされたり、コンパイルできなくなったりします。何が変わったのか、そして必要に応じて以前の動作を固定する方法を説明します。
2026-05-18 errorscsharpdotnet 修正: .NET 6 バイナリ起動時の framework_version=6.0.0 was not found .NET 6 ランタイムが消えたか合っていません。net6.0 を入れ直すか、runtimeconfig で net8.0 へ roll forward するか、csproj のターゲットを変えるか、self-contained で発行します。
2026-05-17 mcpai-agentsdotnet dotnet new mcpserver が .NET 11 Preview 4 SDK に同梱されました .NET 11 Preview 4 は mcpserver プロジェクトテンプレートを直接 SDK に同梱します。Microsoft.McpServer.ProjectTemplates の個別インストールも、preview フィードの手間もありません。stdio か HTTP のトランスポートを選び、Native AOT を有効にし、dotnet new mcpserver -o MyServer がセットアップのすべてです。
2026-05-15 dotnetdotnet-11csharp .NET 11 がデッドロックなしのプロセス出力キャプチャを追加 .NET 11 Preview 4 では、stdout と stderr を並行して読み取る新しい System.Diagnostics.Process API、起動とキャプチャを 1 行で行うヘルパー、そして KillOnParentExit が登場します。
2026-05-14 errorscsharpdotnet Fix: A possible object cycle was detected System.Text.Json は逆参照を持つグラフのシリアライズを拒否します。ReferenceHandler.IgnoreCycles を設定するか、DTO に射影するか、逆向きポインタに [JsonIgnore] を付けてください。Preserve は最終手段です。
2026-05-14 errorscsharpdotnet 修正: EF Core マイグレーション中の SqlException: Timeout expired マイグレーションはランタイムの CommandTimeout ではなくデザインタイムの DbContext を使用します。UseSqlServer(o => o.CommandTimeout(...))、接続文字列の Command Timeout、または Migrate() の前の Database.SetCommandTimeout でタイムアウトを設定してください。
2026-05-13 errorscsharpdotnet 修正: System.Text.Json.JsonException: The JSON value could not be converted System.Text.Json は、受信した JSON トークンが対象の CLR 型と一致しない場合にこの例外をスローします。JSON を型に合わせるか、両者を橋渡しする JsonConverter または JsonSerializerOption を登録してください。
2026-05-13 errorscsharpdotnet 修正: System.Security.Cryptography.CryptographicException: Keyset does not exist 証明書の秘密鍵は、現在のプロセス ID が読めない別の Windows 鍵ファイルにあります。ACL を設定するか、MachineKeySet で PFX を読み込むか、EphemeralKeySet を使用してください。