Inlining isn't a magic bullet for sure. For example when I slap the attribute on the recursive perft function itself the binary size increases by 20kb (74KB -> 94KB) and the performance suffers a little. But every method called from within the perft function appears to receive speed gains from being inlined. I used use it on about two dozen smaller methods.
If I don't use the inlining attribute at all I lose 16M NPS (60M ->44M) regardless of whether I rely Ready-to-run compilation or the JIT. So without help C# and it's runtime obviously don't inline the enough automatically. I'm really not a fan of micro optimizations but at this point least speed gains or losses are easily verified with a set of positions and perft. And thankfully my code still performs consistent between framework .Net5 and .Net6 and different modes of compilation.