リフレクターを使用していくつかのフレームワーククラスを調べたところ、多くのメソッドとプロパティに次の属性があることがわかりました
[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
上記のコメントをどこかで見たことがあり、フォローアップしたことはないと確信しています。
誰かがこれがC#およびその他のコンテキストで何を意味するか教えていただけませんか?
リフレクターを使用していくつかのフレームワーククラスを調べたところ、多くのメソッドとプロパティに次の属性があることがわかりました
[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
上記のコメントをどこかで見たことがあり、フォローアップしたことはないと確信しています。
誰かがこれがC#およびその他のコンテキストで何を意味するか教えていただけませんか?
回答:
別のアセンブリでも、適用先のメソッドをインライン化しても問題ないことをNGenに伝えます。
例えば:
String.Equals
持っている [TargetedPatchingOptOut]
String.Equals
String.Equals
呼び出しをインライン化し、メソッド呼び出し命令をメソッド内の実際のコードに置き換えます。ただし、Microsoftがにセキュリティホールを見つけた場合String.Equals
、単にアップデートすることはできませんmscorlib.dll
。NGenしたアセンブリには影響しないためです。(それは参照せずに生のマシンコードを持っているのでString.Equals
)。
それが実際に発生した場合、セキュリティ更新プログラムによってNGenストアがクリアされると思います。
この属性は.NET Frameworkアセンブリでのみ役立つことに注意してください。あなた自身でそれを必要としません。詳しくは、https://stackoverflow.com/a/14982340/631802をご覧ください。
[MethodImpl(MethodImplOptions.AggressiveInlining)]