Start Debugging

タグ: native-aot

11 件 · ページ1/2

トリムセーフなコードとは何か、どう書けばよいのか?
トリムセーフなコードとは、.NET トリマーが静的に到達可能だと証明できるコードのことで、自己完結型アプリから未使用コードが削除されても生き残ります。本記事は実践ガイドです。アナライザーを有効にし、すべての IL2xxx 警告をゼロにし、リフレクションを DynamicallyAccessedMembers で注釈し、RequiresUnreferencedCode を公開 API まで伝播させ、解析不能なパターンをソースジェネレーターに置き換えます。
DynamicallyAccessedMembers 属性とは何ですか?
DynamicallyAccessedMembers は、リフレクションで到達する Type のメンバーを .NET トリマーと AOT コンパイラーに伝え、トリミングで削除される代わりに保持させます。これにより、サイレントなランタイムの MissingMethodException が、ビルド時の IL2070 警告に変わります。この属性が何をするのか、その背後にあるデータフロー解析がどのように動くのか、そしてパラメーター、フィールド、ジェネリック型パラメーターを正しく注釈する方法を解説します。
Native AOT とは何か、そして何を犠牲にするのか?
Native AOT は .NET アプリを JIT のない単一の自己完結型ネイティブバイナリにコンパイルし、高速な起動と小さなメモリフットプリントを手に入れます。その代償は、ビルド時の C ツールチェーン、遅くなるパブリッシュ、RID ごとのビルド、リフレクションや Reflection.Emit の不可、必須のトリミング、そして Dynamic PGO の不在です。ここに完全な収支を示します。
次へ