2026-07-11 dotnetperformancejit .NET の PGO とは何か、そして有効化する必要はあるのか? PGO(プロファイルに基づく最適化)は、.NET の JIT がワークロードで実際に通る型や分岐に合わせてホットなコードを特化させる仕組みです。Dynamic PGO は .NET 8 以降デフォルトで有効なので、.NET 8 以降では有効化する必要はありません。PGO が何をするのか、その効果をどう確認するのか、そして設定に手を入れる数少ないケースを解説します。
2026-07-11 dotnetperformancejit 階層型コンパイルとは何か、どう捉えればよいのか? 階層型コンパイルは、.NET の JIT に各メソッドを2回コンパイルさせます。まずアプリを起動させるために高速かつ未最適化で、次にランタイムがメソッドをホットだと認識した時点で完全な最適化を施して再度コンパイルします。本記事では tier 0、tier 1、オンスタック置換、Dynamic PGO がどう組み合わさるか、そしてそれらをどう観測し調整するかを解説します。
2026-07-10 dotnetdotnet-climsbuild dotnet build と dotnet publish の違いは何ですか? dotnet build は内側の開発ループのためにプロジェクトをコンパイルし、既定で Debug を使います。dotnet publish は MSBuild の Publish ターゲットを実行し、net8.0 以降では既定で Release を使い、Web アセット、自己完結型ランタイム、単一ファイル、トリミング、AOT まで処理済みのデプロイ可能なフォルダーをパッケージ化します。ここではそれぞれが何を生成し、いつ使うかを正確に説明します。
2026-07-10 dotnetdotnet-clidotnet-watch dotnet watch と dotnet run の違いは何ですか? dotnet run はプロジェクトを一度ビルドして起動します。dotnet watch は dotnet run をファイル監視で包み、ソースファイルを保存するたびにアプリを再起動するか hot reload を適用します。それぞれが正確に何をするのか、dotnet watch が設定して dotnet run が設定しないものは何か、どちらをいつ使うのかを解説します。
2026-07-09 migrationaspnetcoredotnet-11 ASP.NET Core 11 で minimal API を手動の検証チェックから組み込み検証へ移行する ASP.NET Core 11 の minimal API ハンドラーにある手書きの if チェックを、DataAnnotations とソースジェネレーターに基づく組み込みバリデーターへ置き換えるためのステップバイステップの移行ガイドです。何が壊れるか、どの手動ルールが移植できてどれができないか、そして 400 ProblemDetails の契約が同一のままであることをどう検証するかを扱います。
2026-07-09 dotnettrimmingnative-aot トリムセーフなコードとは何か、どう書けばよいのか? トリムセーフなコードとは、.NET トリマーが静的に到達可能だと証明できるコードのことで、自己完結型アプリから未使用コードが削除されても生き残ります。本記事は実践ガイドです。アナライザーを有効にし、すべての IL2xxx 警告をゼロにし、リフレクションを DynamicallyAccessedMembers で注釈し、RequiresUnreferencedCode を公開 API まで伝播させ、解析不能なパターンをソースジェネレーターに置き換えます。
2026-07-06 errorsdotnetdotnet-11 修正: ASP.NET Core 11 の minimal API エンドポイントで「415 Unsupported Media Type」が返る リクエストの Content-Type がエンドポイントのバインド対象と一致しないと、minimal API は 415 を返します。ボディにバインドする型には Content-Type: application/json を送信し、フォームやファイルアップロードには [FromForm] を使ってください。
2026-07-06 errorscsharpcsharp-14 解決: C# の CS9035「Required member 'X' must be set in the object initializer」 CS9035 は required とマークされたメンバーが割り当てられていないことを意味します。オブジェクト初期化子で割り当てるか、すべての required メンバーを設定する [SetsRequiredMembers] 付きのコンストラクターを追加します。
2026-07-03 csharpdotnetdotnet-11 ASP.NET Core 11 で IProblemDetailsService を使って Minimal API のバリデーションエラーレスポンスをカスタマイズする方法 AddProblemDetails に CustomizeProblemDetails コールバックを渡して、ASP.NET Core 11 の組み込み Minimal API バリデーションが返す 400 の形を作り直します。traceId を追加したり、title を書き換えたり、400 を 422 に切り替えたり、カスタム IProblemDetailsWriter で完全に制御したりできます。
2026-07-03 csharpdotnetdotnet-11 ASP.NET Core 11 の minimal API で JWT bearer 認証を設定する方法 ASP.NET Core 11 の minimal API における JWT bearer 認証の完全で動作する設定です。パッケージのインストール、AddAuthentication().AddJwtBearer() の配線、トークンの発行、RequireAuthorization によるエンドポイントの保護、ロールと claim のポリシーの追加、そして dotnet user-jwts によるテストまでを扱います。