C# MethodImpleOptions.AggressiveInline与TargetedPatchingOptOut

C# MethodImpleOptions.AggressiveInline与TargetedPatchingOptOut,c#,.net,inline,jit,ngen,C#,.net,Inline,Jit,Ngen,带有选项methodimpoptions.aggressiveinline的methodimplation属性与带有选项TargetedPatchingOptOut的methodimplation属性之间有什么区别 当我在谷歌上搜索时,每个人似乎都说这两种方法(可能)都是内联的,但没有给出区别。我一直在等着看是否有人能给出更好的答案,但似乎没有 在我读了dtb评论之后,我做了更多的研究,发现了这一点 我对这篇文章的理解是,你可以同时应用两个属性AdvancedPatchingOptout将删除该

带有选项
methodimpoptions.aggressiveinline
的methodimplation属性与带有选项
TargetedPatchingOptOut
的methodimplation属性之间有什么区别


当我在谷歌上搜索时,每个人似乎都说这两种方法(可能)都是内联的,但没有给出区别。

我一直在等着看是否有人能给出更好的答案,但似乎没有

在我读了dtb评论之后,我做了更多的研究,发现了这一点


我对这篇文章的理解是,你可以同时应用两个属性AdvancedPatchingOptout将删除该方法的内衬大小限制,而正如dtb所说,TargetedPatchingOptOut将允许跨程序集边界进行内联操作。

TargetedPatchingOptOut在这里得到了很好的解释:关键的部分似乎是内联是跨部件边界执行,默认情况下不执行此操作。我希望AggressiveInline是一个内联方法的提示,但与TargetedPatchingOptOut不同,它不允许跨程序集边界内联。在阅读您的评论后,我做了更多的研究并发现了这一点。我对这篇文章的理解是,您可以同时应用属性aggressiveInline将删除方法的大小限制,而正如您所说的,TargetedPatchingOptOut将允许跨程序集边界进行内联访问。是这样吗?我也是这样解释的。我如何将你的评论标记为答案?@dtb和Yann:看。tl;dr:除了.Net核心库,
TargetedPatchingOptOut
非常有用之外,JIT已经为所有东西完成了跨程序集边界的内联。对于其他所有人(我们所有人),
TargetedPatchingOptOut
是完全无用的。如上所述,不要在自己的代码中应用TargetedPatchingOptOut-请参阅