リフレクターを使用していくつかのフレームワーククラスを通過し、多くのメソッドとプロパティに次の属性があることに気付きました
[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