2026-07-29 errorscsharpdotnet 解決: Reflection-based serialization has been disabled for this application この InvalidOperationException は、PublishTrimmed または PublishAot が JsonSerializerIsReflectionEnabledByDefault を false にしたことを意味します。生成された JsonSerializerContext で解決します。
2026-07-09 dotnettrimmingnative-aot トリムセーフなコードとは何か、どう書けばよいのか? トリムセーフなコードとは、.NET トリマーが静的に到達可能だと証明できるコードのことで、自己完結型アプリから未使用コードが削除されても生き残ります。本記事は実践ガイドです。アナライザーを有効にし、すべての IL2xxx 警告をゼロにし、リフレクションを DynamicallyAccessedMembers で注釈し、RequiresUnreferencedCode を公開 API まで伝播させ、解析不能なパターンをソースジェネレーターに置き換えます。
2026-06-20 dotnettrimmingnative-aot DynamicallyAccessedMembers 属性とは何ですか? DynamicallyAccessedMembers は、リフレクションで到達する Type のメンバーを .NET トリマーと AOT コンパイラーに伝え、トリミングで削除される代わりに保持させます。これにより、サイレントなランタイムの MissingMethodException が、ビルド時の IL2070 警告に変わります。この属性が何をするのか、その背後にあるデータフロー解析がどのように動くのか、そしてパラメーター、フィールド、ジェネリック型パラメーターを正しく注釈する方法を解説します。
2026-05-12 errorscsharpdotnet 修正: System.IO.FileNotFoundException: Could not load file or assembly が発行済みアプリで発生する dotnet run では動くのに dotnet publish 後に失敗するケースです。原因はランタイムではなく発行フォルダーに DLL がないことです。deps.json、ProjectReference の Private、トリミングを確認してください。
2026-05-10 errorscsharpdotnet Fix: PlatformNotSupportedException: Operation is not supported on this platform (Native AOT) Native AOT は JIT とインタープリターを取り除くため、reflection emit、式ツリーのコンパイル、未知の MakeGenericType は実行時に例外を投げます。IL3050 で呼び出しを特定し、ソースジェネレーターまたは事前生成された経路に置き換えます。