Inside Microsoft .NET IL Assembler is like a backstage pass to the language that ALL managed .NET code compiles down to and a great companion to any .NET developer who wants to better understand how their code is compiled and executed.
Benefits of the book:
For the 'average' .NET developer there are a number of things you can learn and apply to daily software development. For a start you will learn how to read the IL code from compiled C#, VB.NET or any other managed .NET assembly. This will give you more options in tuning performance (since you will understand the true IL impact of your code alternatives) or hunting down bugs, even if orignial source is unavailable.
Learning the finer points of IL will allow you to use the Reflection.Emit namespace to dynamically create and load your own IL-based assemblies at run time, for extreme flexibility, performance or both.
Knowing IL will also allow you to work with existing assemblies by disassembling then, modifying their code then re-assembling them (IL round-tripping). You can add functionality that is not available to C# or VB.NET (i.e. global methods and fields or unions within a struct) or you can control minute details of unmanaged interop.
Things I thought could be improved:
Since the text is quite dense with information, there could be more context which would help with actual application. Sometimes the implications of what was being talked about weren't clear to me.
There were few samples on the CD, although there were lots of snippets inline with the text.
All in all, this is my favorite .NET book simply because, although you can be a great .NET programmer without knowing IL, you are definately better off if you do.