Он сообщает NGen, что можно встроить метод, к которому он применяется, даже в другой сборке.
Например:
String.Equals
имеет [TargetedPatchingOptOut]
- Вы пишете программу, которая вызывает
String.Equals
- Вы запускаете NGen в этой программе для максимальной производительности
- NGen встроит
String.Equals
вызов, заменив инструкцию вызова метода фактическим кодом метода.
Вызов методов обходится (немного) дорого, поэтому это повышает производительность часто вызываемых методов.
Однако, если Microsoft обнаружит брешь в безопасности String.Equals
, они не смогут просто обновить mscorlib.dll
, потому что это не повлияет на сборку, которую вы только что создали. (Поскольку он имеет необработанный машинный код без ссылок String.Equals
).
Я предполагаю, что если это действительно произойдет, обновление безопасности очистит хранилище NGen.
Обратите внимание, что этот атрибут полезен только в сборках .NET Framework. Сама по себе она не нужна. Вы можете найти дополнительную информацию об этом здесь: https://stackoverflow.com/a/14982340/631802