使用反射器检查了一些框架类,并注意到许多方法和属性具有以下属性
[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
我敢肯定,我在其他地方也看到了上述评论,但从未跟进。
有人可以告诉我这在C#和任何其他上下文中意味着什么吗?
使用反射器检查了一些框架类,并注意到许多方法和属性具有以下属性
[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
我敢肯定,我在其他地方也看到了上述评论,但从未跟进。
有人可以告诉我这在C#和任何其他上下文中意味着什么吗?
Answers:
它告诉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)]